Unity/유니티 엔진 동작 관련 맨텀 2022. 10. 24. 01:45
https://forum.unity.com/threads/detect-most-recent-input-device-type.753206/#post-5360982 Detect most recent input device/type? I'm trying to integrate/switchto the new input system and I'm stuck at the following issue. My game supports gamepad, as well as mouse and keyboard... forum.unity.com using UnityEngine; using UnityEngine.UI; using UnityEngine.InputSystem; using UnityEngine.InputSystem.U..
Unity/유니티 엔진 동작 관련 맨텀 2022. 10. 2. 21:18
유니티 공식 영상 참고 : https://www.youtube.com/watch?v=5tOOstXaIKE 혹은 : 문서 참고 : https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/manual/HowDoI.html 이제 New InputSystem이 나온지도 꽤 됐지만 매번 모바일 게임만 작업하다 보니 쓸 일이 없어서 미뤄두고 있다가 한 번 테스트 겸 써봄. #. 패키지 준비하기 패키지 임포트 new InputSystem은 패키지 매니저에서 별도로 임포트 해줘야 함. 임포트 할 때 경고창이 나오는데 그냥 Yes 눌러주면 됨. 플레이어 세팅 PlayerSetting에서 어떤 인풋 시스템을 사용할 것인지 선택할 수 있는데, Legacy, New, Bot..
Unity/유니티 엔진 동작 관련 맨텀 2022. 5. 12. 23:21
유니티 매뉴얼 : ISerializationCallbackReceiver https://docs.unity3d.com/ScriptReference/ISerializationCallbackReceiver.html #. Serialize가 불가능한 Dictionary 유니티에서 Dictionary는 Serialize가 가능한 형식이 아니다. 그럼에도 불구하고 시리얼라이즈를 시도하려면 편법을 사용해야하는데, 그 방법 중 하나가 ISerializationCallbackReceiver 인터페이스 활용하는 것. 아래는 유니티 매뉴얼에 있는 예제이다. Serialize시에는 ISerializationCallbackReceiver.OnBeforeSerialize() 로 Dictionary -> key List, val..
Unity/유니티 엔진 동작 관련 맨텀 2022. 1. 14. 22:54
유니티 문서 https://docs.unity3d.com/kr/530/ScriptReference/MonoBehaviour.OnDestroy.html #. OnDestroy() 유니티에서 Monobehaviour를 상속받는 객체가 파괴될 때 호출되는 함수이다. 파괴될 때의 동작이라는 점에서 객체를 생성한다거나 코루틴을 실행하면 오류를 발생시킬 여지가 많다는 것은 잘 알려져 있다. 하지만 옵저버 시스템으로 이벤트 방식을 사용하게 되면서 예전에는 숙지하지 못했던 부분이 보였다. 우선 평소에는 다음과 같은 코드를 주로 작성한다. 당연히 문제없이 잘 작동한다. public class Parent : MonoBehaviour { public void Awake() { // 이벤트 구독 } public void O..
Unity/유니티 엔진 동작 관련 맨텀 2021. 9. 22. 21:11
오브젝트의 localScale값에 특정 값을 더하는 경우 x 축으로 addX만큼만 움직여야 할 때, 다음과 같은 코드를 작성하는 경우가 많았다. transform.localScale = transform.localScale + new Vector3(addX, 0f, 0f); 그런데, localScale이 +=연산자를 지원한다! 따라서 위의 코드는 아래와 같이 간소화 할 수 있다. // 방법 1 transform.localScale += new Vector3(addX, 0f, 0f); // 방법2 transform.localScale += Vector3.right * addX; Position도 동일하다. (단, Position은 Translate 함수를 이용하자) getter도 setter도 있는데 왜 ..
Unity/유니티 엔진 동작 관련 맨텀 2021. 8. 29. 15:08
OnEnable의 Null 에러 스크립트의 OnEnable에서 레퍼런스를 사용한 동작을 수행하는 경우 주의하지 않으면 null 오류가 발생하는 경우를 자주 볼 수 있다. 문제는 대부분 OnEnable의 호출시점 때문. 특히나 Monobehaviour는 생성자가 없기 때문에 생성한 다음 메서드를 호출하여 초기화를 하는 경우가 생긴다. OnEnable이 외부 호출된 메서드보다 먼저 호출되기 때문에 오류가 발생할 여지가 다분하다. OnEnable의 호출 시점 메인 오브젝트에 스크립트 2개가 붙어있는 상황에서 A 스크립트 (빨간색), B 스크립트 (노란색) 빨간색이 Awake에서 C 스크립트 (초록색)를 AddComponent 한 뒤, Debug.Log(" A Instantiate "); var testPref..