일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 유니티기본
- scrollrect
- 광고테스트
- cs
- unity3D
- unity통신
- 코딩테스트
- 컴퓨터구조
- 유니티기초
- 유니티
- 모션
- canvasgroup
- Admob
- UGUI
- unity
- 전면광고
- 애니메이션
- C#
- 프로그래머스
- React Native
- dotween
- http
- 게임개발
- 애드몹
- LINQ
- 랜덤
- enum
- csvhelper
- ui
- 열거형
- Today
- Total
목록C# (17)
Ruya Games
열거형(또는 열거형 형식)은 기본 정수 숫자 형식의 명명된 상수 집합에 의해 정의되는 값 형식입니다. 보통 아래처럼 선언을 합니다.enum Season{ Spring, Summer, Autumn, Winter} 그리고 가끔 string값을 enum값으로 변환하고 싶을 때가 있습니다. 이때는 Parse또는 TryParse를 사용하시면 됩니다.string enumString = "Summer";if(Enum.TryParse(enumString, out Season result)){ //여기서 result값을 사용하시면 됩니다.}else{ //parse 실패했을 경우{
유니티에서 빌드할때가 될때쯤에 Mono와 IL2CPP라는걸 보게됩니다. 이게 뭘까요?IL2CPP (Intermediate Language To C++)목적Unity 전용: IL2CPP는 Unity 게임 엔진에서 .NET 스크립트를 네이티브 코드로 변환하여 게임 성능을 극대화하기 위해 개발되었습니다.작동 방식IL 코드 생성: Unity에서 작성된 C# 스크립트는 .NET 중간 언어(IL)로 컴파일됩니다.C++ 코드 변환: IL2CPP는 이 IL 코드를 C++ 코드로 변환합니다.네이티브 컴파일: 변환된 C++ 코드는 각 플랫폼(iOS, Android, Windows, macOS, WebGL 등)에 맞게 네이티브 코드로 컴파일됩니다.장점성능 최적화: 네이티브 코드로 직접 컴파일되기 때문에 실행 성능이 매우 높..
무한 스크롤이 정확한 용어인지는 모르겠습니다만, 스크롤창의 오브젝트들을 로드 시점에 한번에 생성하지 않고 스크롤이 바닥을 찍어갈때쯤마다 밑의 새로운 오브젝트들을 생성하는 스크롤창을 만들어보려고 합니다.제가 알기로는 아마 비슷한 기능을 하는 에셋이 몇개 있는 것으로 알지만, 구조가 간단할것 같고 다운받아서 수정해가면서 쓰기도 귀찮아서 그냥 직접 만들어보기로 했습니다. 기본적인 무한 스크롤 생성 방법입니다.스크롤이 아래 부분의 특정 지점(scrollBound)에 도달하면 LoadItem() 함수를 통해 오브젝트들을 새로 생성합니다. 이때 생성되는 아이템들의 개수 단위는 itemCount 변수에 저장된 값만큼 생성하게 됩니다.using UnityEngine;using UnityEngine.UI;public c..
유니티에서 CSV를 사용하는 방법을 두가지 적으려고 합니다.저는 Android, iOS환경에서 동작하는 앱을 개발하기 때문에, 플랫폼별로 경로 설정부분이 약간 달라질 수 있습니다.첫번째는 단순히 파일을 StreamReader를 사용해서 한줄씩 읽는 방식입니다.using System;using System.IO;...static void ReadCSV(){ string filePath = "yourfile.csv"; using (StreamReader sr = new StreamReader(filePath)) { string line; while ((line = sr.ReadLine()) != null) { string[] value..
문제 설명지나다니는 길을 'O', 장애물을 'X'로 나타낸 직사각형 격자 모양의 공원에서 로봇 강아지가 산책을 하려합니다. 산책은 로봇 강아지에 미리 입력된 명령에 따라 진행하며, 명령은 다음과 같은 형식으로 주어집니다.["방향 거리", "방향 거리" … ]예를 들어 "E 5"는 로봇 강아지가 현재 위치에서 동쪽으로 5칸 이동했다는 의미입니다. 로봇 강아지는 명령을 수행하기 전에 다음 두 가지를 먼저 확인합니다.주어진 방향으로 이동할 때 공원을 벗어나는지 확인합니다.주어진 방향으로 이동 중 장애물을 만나는지 확인합니다.위 두 가지중 어느 하나라도 해당된다면, 로봇 강아지는 해당 명령을 무시하고 다음 명령을 수행합니다.공원의 가로 길이가 W, 세로 길이가 H라고 할 때, 공원의 좌측 상단의 좌표는 (0, ..
using System;using System.Linq;public class Solution { public int solution(int k, int m, int[] score) { var boxCount = score.Length / m; var orderedScore = score.OrderByDescending(x => x).ToList(); int sum = 0; for(int i = 0; i 단순히 점수의 배열을 내림차순 또는 오름차순으로 정렬한 후, m개씩 Take하면서 곱해주면서 더해주면 되는 간단한 문제입니다. 사실 Linq안쓰고 System.Array의 Array 클래스들을 쓰면 됩니다...https://learn.micros..
오브젝트 풀(또는 오브젝트 풀링) 패턴이란게 있습니다. 1)사용할 오브젝트 목록을 미리 생성해서 메모리에 올려놓고, 2)사용자 오브젝트의 요구가 발생하면 3)풀에 있는 오브젝트들을 풀에서 꺼낸뒤, 4)사용자 오브젝트에게 제공하는 방식으로 동작합니다. 풀에서 꺼내진 오브젝트는 사용이 종료되면 다시 풀로 돌아가게 되고, 이렇게 오브젝트를 재사용하는 원리입니다. 주로 총알같은 동일한 발사체들을 여러개 생성해야 할때 유용합니다. 오브젝트 풀은 들어가는 오브젝트의 개수를 조정함으로써 사용하는 메모리의 양을 일관적이도록 조정할 수 있습니다. 구체적으로는, 만약 설정한 양보다 오브젝트의 개수가 적다면 런타임 안에서 동적으로 생성하도록 할 수 있고, 사용이 종료된 오브젝트가 다시 풀로 돌아가려고 할때 풀이 지정한 크기..
가끔 서버와의 HTTP 통신을 구현해야 할때가 있습니다. 아래는 간단히 Post, Get을 사용할 수 있도록 하는 코드입니다. 비동기 호출을 UniTask를 사용해서 구현했는데, 그냥 async를 사용하셔도 됩니다. 다만 async보다는 UniTask가 성능이 좋습니다. (UniTask의 자세한 설명 & 다운로드는 여기서 가능합니다. -> https://github.com/Cysharp/UniTask) 구현 코드가 길지만 사용은 간단합니다 :) (전체코드는 맨 밑에 있습니다.) 일단 UnityWebRequest로 Post, Get을 호출하는 함수를 작성합니다. private async UniTask Post(string action, Request data) where T : Response { var ..
리스트의 순서를 랜덤으로 설정하는 방법은 여러가지가 있을텐데, 아래는 그중 LINQ를 사용하는 간단한 방법 하나입니다. myList = myList.OrderBy(_ => Guid.NewGuid()); 여기서 값을 하나 추출하고 싶다면 뒤에 First() 또는 FirstOrDefault()를 붙이면 됩니다. var selectValue = myList.OrderBy(_ => Guid.NewGuid()).First(); 여기서 특정 값이 추출되지 않길 바란다면, Remove()로 원소를 제거하고 돌리시면 됩니다. var myList = new List { 0, 1, 2, 3, 4 }; myList.Remove(3); var selectValue = setArray.OrderBy(_ => Guid.NewGu..
UGUI로 화면을 구성하고 테스트할때, 갑자기 잘 되던 터치가 안되거나, 버튼이 눌리지 않는 경우가 있는데요. 기본적으로는 3가지 경우가 있습니다. 1. 레이어 순서 맞추기 유니티의 UGUI는 하이어라키상에서 같은 부모일때 아래로 내려갈수록 위에 배치됩니다. 아래와 같이 5개의 오브젝트가 있고, 모두 겹쳐있다면 가장 아래에 있는 Button_4만 클릭할 수 있는 것이죠. 따라서 이러한 경우에는 배경으로 사용할 오브젝트의 자식index를 가장 위로 올려줘야 합니다. 2. Raycast target 값 설정 배경으로 사용하고 싶지 않아서 다른 오브젝트 앞에 표시하고 싶지만 터치 이벤트를 받고싶지는 않다면, 해당 오브젝트의 Raycast Target설정을 체크 해제하면 됩니다. 3. EventSystem 컴포..