20231024_기록_2D 플랫포머 게임 만들기

2023. 10. 24. 21:09IT/TIL

오늘 한 것들

2D 플랫포머 게임 만들기 실습

 

오늘은 어제까지 들었던 유니티 강의들을 실제로 실습해보면서

처음부터 새롭게 게임을 만드는 실습을 했다.

 

이전에 했었던 프로젝트 대신에 새롭게 프로젝트를 만들어서

기억나는 부분들을 하나씩 실습하며 복습했다.

 

기본적인 씬 만들기, 캐릭터 만들기, 몬스터 만들기,

캐릭터와 몬스터 애니메이션 만들기 및 bool 값을 이용하여 상태 변경하기,

캐릭터 이동, 점프 만들기, 타일맵 만들기, 타일맵으로 스테이지 구성하기

까지는 문제없이 진행하였으나,

몬스터 AI, 플레이어 피격, 몬스터 피격의 경우에는 잘 되지 않아

강의의 해당 부분을 몇 번 돌려보았다.

 

이전에 했던 프로젝트가 아니라 새롭게 프로젝트를 만들어서 복습하니

강의를 보면서 제대로 이해하지 못했던 부분들을 다시 볼 수 있었다.

그냥 기존의 프로젝트에서 마무리하는 것이 아니라 새롭게 만들어서 훨씬 이점을 얻은 것 같다.

중간 중간에 오류가 발생하여 이를 해결하는데 고생이 있었지만,

모든 과정이 이후의 나에게 도움이 될 것이라 생각하기에 보람이 있었다.

 

오늘 2D 플랫포머 게임 만들기를 마무리하려고 하였으나,

게임 매니저, 유저 인터페이스, 음향효과를 아직 하지 못하여서 내일까지 게임을 완성하려고 하고 있다.

 

 

아래는 오늘 오류로 항상 생기는 오류가 아니라 실행을 하면 어떤 경우에 발생하는 오류인데

그 발생 이유도 확인할 수 없어서 해결법을 구글링하여서 일단은 해결하긴 했는데,

시간을 많이 들였지만 정확하게 해결하지 못한 에러이다.

 

ArgumentNullException: Value cannot be null.
Parameter name: _unity_self
UnityEditor.SerializedObject.FindProperty (System.String propertyPath) (at <fe7039efe678478d9c83e73bc6a6566d>:0)
UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.BindPropertyRelative (UnityEngine.UIElements.IBindable field, UnityEditor.SerializedProperty parentProperty) (at <c91a25f185b743118a39aafa100dff09>:0)
UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.BindTree (UnityEngine.UIElements.VisualElement element, UnityEditor.SerializedProperty parentProperty) (at <c91a25f185b743118a39aafa100dff09>:0)
UnityEditor.UIElements.Bindings.SerializedObjectBindingContext.ContinueBinding (UnityEngine.UIElements.VisualElement element, UnityEditor.SerializedProperty parentProperty) (at <c91a25f185b743118a39aafa100dff09>:0)
UnityEditor.UIElements.Bindings.DefaultSerializedObjectBindingImplementation+BindingRequest.Bind (UnityEngine.UIElements.VisualElement element) (at <c91a25f185b743118a39aafa100dff09>:0)
UnityEngine.UIElements.VisualTreeBindingsUpdater.Update () (at <79c7b132c51745cbae03eebea8111c0e>:0)
UnityEngine.UIElements.VisualTreeUpdater.UpdateVisualTreePhase (UnityEngine.UIElements.VisualTreeUpdatePhase phase) (at <79c7b132c51745cbae03eebea8111c0e>:0)
UnityEngine.UIElements.Panel.UpdateBindings () (at <79c7b132c51745cbae03eebea8111c0e>:0)
UnityEngine.UIElements.UIElementsUtility.UnityEngine.UIElements.IUIElementsUtility.UpdateSchedulers () (at <79c7b132c51745cbae03eebea8111c0e>:0)
UnityEngine.UIElements.UIEventRegistration.UpdateSchedulers () (at <79c7b132c51745cbae03eebea8111c0e>:0)
UnityEditor.RetainedMode.UpdateSchedulers () (at <c91a25f185b743118a39aafa100dff09>:0)

 

 

ArgumentNullException: Value cannot be null.
Parameter name: _unity_self

 

Parameter 값이 null로 판단(인식)되어서 발생하는 문제로 추정되는데

해당 Parameter가 _unity_self로 많은 원인이 있는 것으로 쉽게 해결할 수 없었는데,

가장 우선적인 문제는 unity에서 생기는 문제로 버전이 다른 환경에서 실행하면 해결되는 경우가 있다고 한다

-> 이는 근본적인 해결법이 아니니 패스.

두번째로 사용했던 방법은 코딩한 내용들에 문제가 없는지 다시 살펴보기

-> 강의를 보면서 코딩 내용들을 다시 확인해 봤는데 문제가 없었다 (다른 점이 있으면 같게 했지만 오류는 발생)

세번째는 구글링에서 유니티포럼에서 발견한 해결법인데

우선 프로젝트를 복사해서 새롭게 만든 이후에 하나씩 데이터들을 지워보면서 오류가 발생하는지 확인하는 방법이다.

-> 이 방법을 사용하였는데 새롭게 복사한 프로젝트에서는 오류가 발생하지 않았다.

근본적인 해결법은 찾지 못했지만 해결을 한 경우로, 프로그래밍에서 많이 겪을 것으로 생각되는 경험이었다.

 

오늘은 복습을 하며 강의 위주의 공부보다 실제로 유니티를 조작해보는 실습 위주의 공부를 하였는데,

아직은 사전 지식이 없기에 좀 아쉬운 감이 있었지만, 좀 더 실력을 쌓는다면 실습 위주의 공부가 더 잘 맞을 것을 느꼈다.