Unity/Tip

    Timeline KeyFrame에 관하여...

    Unity의 Timeline은 키프레임을 사용하여 값을 시간에 따라 변경할 수 있는 기능입니다. Vector3, float, int는 모두 연속적인 값을 표현할 수 있는 타입이기 때문에 키프레임을 삽입할 수 있습니다. 그러나 string은 문자열을 표현하는 타입이기 때문에 키프레임을 삽입할 수 없습니다. 문자열은 연속적인 값을 표현하지 않기 때문입니다. 예를 들어, "Hello, world!"라는 문자열을 1초마다 키프레임을 삽입한다고 가정해 보겠습니다. 첫 번째 키프레임에서 "Hello, world!"라는 문자열이 설정되고, 두 번째 키프레임에서 "Goodbye, world!"라는 문자열이 설정됩니다. 이 경우, 두 번째 키프레임에서 문자열이 변경되었는지 확인하기 어렵습니다. long도 마찬가지입니다...

    RectTransform : Some values driven by Canvas.

    RectTransform의 값을 조정 할 수 없을 때 값을 변경하고 싶을 때는 Canvas 컴포넌트의 Render Mode를 World Space로 변경하면 값을 변경할 수 있습니다.

    Unity 빌드 에러 : Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8

    Unity Editor 버전을 업데이트 했을 경우(필자가 그러함) Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" 이와 같은 에러가 발생한 경우 Minimum API Level을 13.0이상으로 변경해주면 해결이 된다.

    Unity에서 csv파일 만들기

    레벨 디자인을 위해 ScriptableObject 파일들의 정보를 텍스트 파일로 만들 필요가 있어서 데이터를 엑셀로 만드는 방법을 찾다가 Nuget 패키지를 설치해 사용 해보려 했는데 using이 되질 않아 일단 내가 필요한 데이터들을 csv파일로 만들어봤다. 코드 using System; using System.Collections.Generic; using System.IO; using UnityEngine; public class CSVWriter { static Dictionary excel = new Dictionary(); public static void Add(string filename ,params string[] datas) { string cell = string.Join(",", ..

    Unity에서 게임 오브젝트의 Null 체크 속도 비교

    Unity 개발을 하다 보면 게임 오브젝트의 Null 체크를 자주 사용하게 됩니다. 게임 오브젝트가 Null인지 확인하기 위해 is 연산자와 == 연산자를 사용할 수 있습니다. is 연산자와 == 연산자의 차이점 is 연산자는 객체의 참조 값이 Null인지 확인합니다. == 연산자는 객체의 값이 Null인지 확인합니다. is 연산자의 장점 == 연산자보다 빠르다. 객체의 값이 Null인지 확인하지 않는다. == 연산자의 장점 is 연산자보다 간결하다. 객체의 값이 Null인지 확인할 수 있다. JetBrain Rider의 제안 최근 필자는 IDE를 VSCode에서 JetBrain Rider로 바꾸었다. Rider에서는 다음과 같은 제안을 했다. Comparison to 'null' is expensive..

    IEnumerator 메서드에서 async await 사용

    최근 작업중인 게임 데이터를 Local에 저장하던 것을 Firebase의 Database로 옮기는 작업을 진행하고 있다. DB에 데이터 저장은 잘되는데 Load가 제대로 되질 않아 삽질을 했던 경험을 공유하고자 한다. 내 프로젝트의 GameManager는 게임을 시작할 때 게임의 구성을 갖추는 셋팅을 할 때 IEnumerator 함수를 통해 플레이어를 생성 및 초기화하고 게임을 구성한다. Firebase에서 데이터를 가져오기 위해 FirebaseManager에 접근해 데이터를 로드하는 async 함수를 실행하면 Unity가 작동을 멈췄다. Unity의 IEnumerator 함수안에서 async 사용시 응답없음 문제가 발생하는 이유는 IEnumerator 함수가 Deferred Execution을 사용하기..

    클릭한 위치가 특정 오브젝트 안에 속해 있는지 판단하는 방법

    소개 Unity에서 RectTransform 객체가 화면상의 특정 좌표를 포함하는지 여부를 확인하려면 RectTransformUtility.RectangleContainsScreenPoint 함수를 사용할 수 있습니다. 이 함수는 RectTransform 객체의 좌표, 크기, 회전각도, 그리고 화면상의 좌표를 입력으로 받아 RectTransform 객체가 화면상의 좌표를 포함하는지 여부를 반환합니다. 사용법 RectTransformUtility.RectangleContainsScreenPoint 함수는 다음과 같이 사용할 수 있습니다. bool contains = RectTransformUtility.RectangleContainsScreenPoint(rectTransform, screenPoint); ..

    Animation Preview Auto Play

    더보기 필자는 Unity로 게임을 개발하고 있다. 현재 개발에 사용중인 오브젝트의 Animation은 300개가 넘어간다. 이전에는 PreView의 Play 버튼을 눌러 일일이 하나씩 재생시켜 확인을 하였는데 이제는 이또한 귀찮아졌다... GPT 4 사용 우리의 멍청한 친구 GPT에게 "I want the preview to play automatically when an animation file is selected." 라고 질문을 했다. #if UNITY_EDITOR using UnityEngine; using UnityEditor; using UnityEditor.Animations; [InitializeOnLoad] public class AutoPlayAnimationPreview { stat..