본문 바로가기

Unity/스크립터블오브젝트15

Scriptable Object - 응용: SaveData, Saver, SceneController (15) SaveData AdventureTutorial은 씬마다 SaveData가 존재한다. 씬 전환 시 해당 씬의 변경사항을 잃지 않고 저장해보자. (PlayerSaveData는 영속적인 씬에서 계속 존재한다. 씬 로드 시 플레이어 위치를 초기화하기 위해 값이 저장된다. 값은 Reaction 중 SaveScene이 가지고 있으며 Scene전환 시 저장한다.) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 7.. 2020. 6. 11.
Scriptable Object - 응용: 씬 직렬화의 특징과 활용 (14) 씬 직렬화의 특징과 활용 특징 SO의 인스턴스를 Scene에 직렬화 한다는 뜻은 .asset파일로 직렬화 하지 않는다는 것이다. 씬에 배치된 MonoBehaviour개체에 의해 생성된 SO 인스턴스는 MonoBehaviour의 참조값으로써 .unity 파일에 MonoBehaviour 항목으로 직렬화된다. 이 방식의 한계는 .asset파일을 생성하지 않기 때문에 Prefab으로 직렬화할 수 없다. 이는 곧 디스크에 저장할 수 없다는 뜻이다. "정확히는 씬 파일도 디스크에 저장된다..." 따라서 해당 MonoBehaviour 개체를 Prefab으로 만들어서 다른 씬에 재사용할 수 없다. (왜냐하면 .prefab 파일은 생성된 instance가 .asset파일이 아니라서 fileID로 저장하지 못하기 때문이다.. 2020. 6. 11.
Scriptable Object - 응용: ReactionCollection, 팝업과 드래그박스, 폴드아웃 (13) ReactionCollection ReactionCollection은 Reaction들을 저장한다. ReactionCollection의 React()함수는 Interactable에 의해 호출된다. React()함수가 호출되면 저장된 Reaction들을 모두 실행한다. 위 Reaction들은 ScriptableObject로 만들어진 것이며 추상클래스로부터 구체화된 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 using UnityEngine; public abstract class Reaction : ScriptableObject { public void Init () { SpecificInit (); } protected virtual void Specif.. 2020. 6. 11.
Scriptable Object - 응용: ConditionEditor, AllConditionsEditor, 프로젝트뷰 정리 (12) ConditionEditor AllConditionsEditor와 ConditionCollectionEditor는 각각 Condition을 직접 생성한다. AllConditionsEditor는 .asset파일로 생성하고, ConditionCollectionEditor는 인스턴스만 생성한다. Condition의 인스턴스 생성은 ConditionEditor에서 제공한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67.. 2020. 6. 9.
Scriptable Object - 응용: EditorWithSubEditors, 확장 메서드 (11) EditorWithSubEditors : Editor Editor의 인스턴스는 어떻게 생성될까? MonoBehaviour의 에디터는 해당 MonoBehaviour가 생성되면 같이 자동 생성된다. ScriptableObject의 에디터도 .asset 파일이 생성되면 같이 자동 생성된다. 그러나 ScriptableObject를 코드 상에서 인스턴스만 생성하면 해당 에디터는 자동 생성되지 않고 직접 생성해줘야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 using UnityEngin.. 2020. 6. 8.