Unity 31

[Unity] Behaviour Tree Editor 제작기 - 3

노드들이 이런 형태가 되길 원했고, 구현을 성공 하긴 했지만 다른 문제가 발생하여 결국 포기했다.     문제의 원인 노드는 Experimental.GraphView.Node를 상속받도록 만들었다.노드안에 내용들은 container들이 감싸고 있고 아래와 같은 구조로 되어있다.    container 구성을 변경할 순 없어서 (아예 없는 건 아니지만... 방법은 아래에)mainContainer.Clear() 함수를 이용해서 기존의 mainContainer를 삭제하고 새로운 container를 만들어서 원하는 레이아웃으로 구성되게 만들었다. 그 결과 처음 이미지처럼 input과 output 사이에 tilte이 오도록 만들 수 있었다. 여기까진 큰 문제가 없어보였는데 문제는 에셋에 변경사항이 생기거나 유니티..

Unity/개발연습 2024.08.30

[Unity] Behaviour Tree Editor 제작기 - 2

지난번에 ScriptableObject가 아닌 다른 방식으로 저장하려고 json이나 yaml 파일로 저장하는 방식도 구현해봤는데 원하는 기능을 만들기가 힘들어서 다시 ScriptableObject 방식으로 돌아왔다. 이전에는 ScriptableObject 하위에 ScriptableObject가 있던 구조가 문제였던거라 그 부분을 제거했다.[CreateAssetMenu(fileName = "New Behaviour Tree", menuName = "ScriptableObjects/Behaviour Tree", order = 1)]public class BehaviourTree : ScriptableObject {}    각각의 Node들은 BehaviourNode를 상속 받는 구조public Behavio..

Unity/개발연습 2024.08.27

[Unity] Behaviour Tree Editor 제작기 - 1

이전 프로젝트에서 Behaviour Tree를 이용해서 몬스터 AI를 제작했었는데, Tree 구조를 코드로만 파악하기에는 어려움이 있었다. AnimtorController처럼 에디터에서 Behaviour Tree의 구조를 확인하면서 제작을 하면 좋을 것 같다는 생각을 했었지만, 간단한 AI를 구현하는 것 치고 시간이 너무 오래 걸릴 것 같아서 포기했었다. 그래서 이번에는 시간도 되고 같은 기능을 만들어야 하니 이번 기회에 제대로 만들어보고자 한다.   에셋 스토어에도 있고, Behavior Designer - Behavior Trees for Everyone | 비주얼 스크립팅 | Unity Asset StoreGet the Behavior Designer - Behavior Trees for Every..

Unity/개발연습 2024.08.22

[Unity] Inspector에서 함수 실행하기

예전에 Ordin Inspector 에셋을 사용했을 때 그 안에 있었던 기능인데 가끔 필요할 때가 있어서 만들어 봤다.  Odin Inspector and Serializer | 유틸리티 도구 | Unity Asset StoreUse the Odin Inspector and Serializer from Sirenix on your next project. Find this utility tool & more on the Unity Asset Store.assetstore.unity.com    아래와 같이 [Button] Attribute를 추가하면 Inspector 창에 버튼 UI가 추가되고, 버튼을 누르면 해당 함수가 실행되는 구조이다.     함수에서만 어트리뷰트를 사용하기 위해 AttributeT..

Unity/기능구현 2024.08.14

[Unity] Prefab의 Missing Script 자동으로 삭제하기

스크립트 파일을 삭제했을 때 해당 스크립트 파일을 사용하고 있는 오브젝트나 프리팹이 있으면 오류가 발생한다.      이런 상황을 방지하기 위해 모든 프리팹을 검사해서 Missing Script를 삭제하는 기능을 만들었다.using System.Collections.Generic;using System.Linq;using UnityEditor;using UnityEngine;public class DeleteMissingScripts : MonoBehaviour{#if UNITY_EDITOR [MenuItem("Custom/Delete Missing Scripts")] public static void DeleteMissingScriptInPrefabs() { string[]..

Unity/기능구현 2024.07.19

[Unity] 사이드 프로젝트 개발일지 (씬 전환 커스텀 에디터)

개발이 진행되면서 씬의 개수가 늘어나고 있어서 씬을 변경하고 싶을 때 매번 찾기가 너무 귀찮아 졌다.     그래서 좀 찾아보니까 Toolbar 영역에 버튼이나 드롭다운을 추가할 수 있는 코드를 발견했다.  GitHub - marijnz/unity-toolbar-extender: Extend the Unity Toolbar with your own Editor UI code.Extend the Unity Toolbar with your own Editor UI code. - marijnz/unity-toolbar-extendergithub.com    이걸 바로 적용했어도 되긴 했는데 쓸모없는 기능들은 다 빼버리고 싶어서 직접 만들었다.     하지만 ChatGPT 선생님께서 대부분 만들어주셨기 때문에 ..

Unity/개발연습 2024.07.19