본문 바로가기

전체 글35

C# 반환값 여러개 받기 Tuple 메서드 프로그램을 만들다보면 함수의 리턴값이 여러개 있으면 좋겠다는 생각을 많이 합니다. 그래서 전역변수로 데이터를 저장하거나 ref, out 등으로 데이터를 가져올수 있습니다. 그렇지만 변수를 미리 선언해주어야 하기에 불편합니다. 1.반환값을 가져오는 방법 C# 7.0이상부터 여러개의 반환값을 가져올수 튜플 기능을 제공합니다. 튜플은 간단한 데이터들을 구룹화하여 간결하게 할수 있는 기능입니다. 2.유니티 C# 버전 유니티 버전마다 지원하는 C# 버전이 다르니 프로젝트 시작할때 버전을 알아두는데 도움이 됩니다. 최신 C#을 문법을 배워 빠른 개발을 할수 있기 떄문입니다. 2021.3 기준으로 C# 9.0을 사용하고 있다는걸 알수 있습니다. 3.튜플 형식 C# 기본적인 튜플 이론 간단한 데이터들을 구룹화하였습니다.. 2022. 5. 19.
유니티 코루틴 Coroutine 딜레이 알아보기 유니티에서 딜레이를 함수를 딜레이 후 작동하기 위해서는 여러방법이 있습니다. 1.Invoke 함수를 이용하는 방법입니다 유니티 함수는 매개변수 파라미터 인자에 실행할 함수 이름과 딜레이 시간을 넣어주어 실행합니다. 실행함수 Invoke(string methodName, float time); 취소함수 (실행되기전에 취소할수 있습니다) CancelInvoke(); 메소드에 매개변수를 전달해야 하는 경우 대신 Coroutine 을 사용 하는 것이 좋습니다. 코루틴은 또한 더 나은 성능을 제공합니다. 장점 코드가 간결하고 쉽다. 단점 함수이름을 string으로 넣어줘야 한다. 복합적인 딜레이가 하기위해서는 코드가 지져분해 진다. 실행할 함수에 매개변수를 넘길수 없다. public class Test : Mon.. 2022. 5. 17.
유니티 Unity 메모리 관리 가비지 컬렉션 게임이 문제 없이 원할하게 실행되도록 하려면 Unity의 메모리 사용과 이해하는 것이 중요합니다. Unity에서 메모리가 작동하는 방식을 설명하며 Unity의 메모리 성능을 향상시킬 수 있는 방법을 알아보겠습니다. Unity는 게임 개발중에 메모리를 처리하기 위해 메모리 관리를 크게 세 가지로 작동합니다. 관리되는 메모리: 가비지 컬렉터를 사용하여 자동으로 메모리를 할당하는 해지하는 제어된 메모리 부분입니다. C# 관리되지 않는 메모리: Unity 컬렉션 네임스페이스 및 패키지와 함께 사용할 수 있는 메모리 관리 부분입니다. 이 메모리 타입은 사용하지 않는 메모리 부분을 관리하기 위해 가비지 컬렉터를 사용하지 않기 때문에 “관리되지 않는”이라고 합니다. 네이티브 메모리: Unity에서 엔진을 구동하는 데.. 2022. 5. 17.
유니티 unity 씬 로브 및 전환 1. 씬 (Scene) 게임 설계를 어떻게 하느냐에 따라 하나의 씬으로 게임을 만들수도 있고 여러개의 씬으로 만들수도 있습니다. 미니게임같은경우 하니의 씬으로 로고, 타이틀, 로비, 게임 등을 한씬에 담아서 만들기도하며 규모가 있는게임경우 여러씬을 나눠 개발됩니다. 하나의씬으로 할까 여러개의 씬으로 할까의 기준이 애매하긴 합니다. 간단한 기준을 정하면 게임 및 로비에 리소스가 많이 들어갈 경우(모델링 및 텍스쳐) 게임이 느려지거나 게임이 꺼질수 있습니다. 2. 씬 전환 (Scene transition) 유니티에는 SceneManager 클래스가 있습니다. SceneManager를 사용해 씬 전환을 제어할수 있습니다. 씬 전환에는 방동기화 방식과 비동기화 방식이 있습니다. 동기화 방식 씬 로드시 현재 작업.. 2022. 5. 17.
유니티 수학함수 Mathf 유니티 기본 수학함수 있습니다. Static Variables Deg2Rad -각도를 라디안으로 변환하는, 변환 상수 입니다. Epsilon -아주 작은 부동 소수점 값을나타냅니다.(읽기전용) 소수점 비교할때 많이 사용합니다. 유니티 버그로 인하여 0에가까운 소수값을 비교하기 위해 사용합니다. Infinity -양의 무한대를 나타냅니다. Physics.Raycast(Vector3 origin, Vector3 direction, RaycastHit hit, float maxDistance = Mathf.Infinity, int layerMask = DefaultRaycastLayers) 레이를 쓸때 많이 나용합니다. PI -3.14159265358979...값 입니다. Rad2Deg -라디안을 각도로 변환.. 2022. 5. 17.
유니티 Unity C# 한글 앞 단어에 따른 을(를) 조사 변화 유니티에서 한글을 사용할경우 글자조합으로 표시해줄경우가 많습니다. 예를 들어 로봇을 클리어 했습니다. 보스를 클리어 했습니다. 로봇 + 을(를) 클리어 했습니다. 조합으로 표시해주는데요. 자연스로운 문장으로 만들기위해서 을 클리어 했습니다, 를 클리어 했습니다. 2개를 만들어 상황에 따라 사용해 주어야 합니다. 자주사용하는 을(를), 이(가), 은(는), 과(와) 숫자에 따라 조사가 자동으로 변환되는 코드입니다. 예를 들어 로봇을(를) 클리어 했습니다. 변환시 로봇을 클리어 했습니다. 로 자동 변환됩니다. 한글 앞 글자의 받침 유무에 따라 적합한 조사를 출력 숫자 0, 1, 3, 6, 7, 8은 받침이 있는 문자로 처리 2, 4, 5, 9는 받침이 없는 문자로 처리 영문 등 기타 문자 별도 처리 없이 “.. 2022. 4. 20.
유니티 게임 로직 타겟주변을 회전 스킬구현하기 뱀파이어 서바이벌 게임을 재미있게 하다보면 어떻게 구현하였을지 궁금하게 됩니다. 우주에서 태양의 주위를 도는 행성들처럼 그 주위를 계속 도는 효과는 여러방법으로 구현할수 있습니다. 가장 쉬운방법은 캐릭터 하위에 넣어서 물체를 돌려주면 됩니다. 하지만 하위에 넣어서 돌려주면 3D게임같은 경우 캐릭터가 360도 돌수 있어 게임들은 하위까지 같이 돌기에 또다른 작업을 해주어야 합니다. 가장 무난한 방법은 캐릭터를 따라다니면서 중점에서 각도를 돌면서 일정 반지름만큼 이동 시켜주는 로직을 많이 사용합니다. public class TargetCursor : MonoBehaviour { public Transform target; public float yPosition; // 반지름. public float rad.. 2022. 4. 19.
[알고리즘] 셔플 알고리즘 Unity C# 에서 중복없이 뽑기에 사용하기 좋은 알고리즘입니다. public void ShuffleList(List list) { int random1; int random2; T tmp; for (int index = 0; index < list.Count; ++index) { random1 = UnityEngine.Random.Range(0, list.Count); random2 = UnityEngine.Random.Range(0, list.Count); tmp = list[random1]; list[random1] = list[random2]; list[random2] = tmp; } } 사용 예) 카드게임에서 카드뽑기 게임에 사용할수 있습니다. 궁수의 전설 모바일게임에서 랜덤 버프로 사용할수 .. 2020. 6. 5.