[Unity] Scriptable Object에서 순수한 종류의 다태성은 작용하지 않습니다.하지만...
배경
RPG를 개발하여 Active Skill이 Scriptable Object를 계승하여 주 데이터를 관리하도록 노력하고 있습니다.
ActiveSkill 자체를 다태성으로 바꾸는 것이 아니라 기술 효과로 class, SkillExecutor
에서 기술한 장면은 다음과 같은 절차를 이용하여 명세표를 작성하여 개념 디자인에서 체량의 부피를 분석하도록 한다.
하지만 작동을 시도해 보면 Skill Executor의 다태성은 작용하지 않는다.
트위터와 Slack의 Unity 개발 모임에서 가르쳐 주셨지만 드디어 현황(Unity 2018.4)에서 Scriptable Object에서 순수한 다태주의가 작용하지 않는 것을 발견했습니다.
코드 예제
using UnityEngine;
using System;
public class ActiveSkill : ScriptableObject {
public SkillExecutor Executor;
public void OnCreate (string typeName) {
// スプレッドシートで型名を文字列で管理し、ScriptableObject.CreateInstanceした際に型名からインスタンス化させようとしている
// なお直接 Executor = new PhysicExecutor(); としてもポリモーフィズムが働かないのは変わらない
Type executorType =Type.GetType(typeName);
Executor = (SkillExecutor)Activator.CreateInstance(executorType);
}
}
[Serializable]
public class SkillExecutor {
public void Execute () {
Debug.Log("スキル効果だよ");
}
}
[Serializable]
public class PhysicExecutor : SkillExecutor {
public override Execute () {
Debug.Log("物理ダメージ与えるよ");
}
}
[Serializable]
public class MagicExecutor : SkillExecutor {
public override Execute () {
Debug.Log("魔法ダメージ与えるよ");
}
}
하지만 유니티 2019.3에서 이 정도는 할 수 있을 것 같다.필드에 있습니다
[SerializeReference]
될 것 같아요.SerializeReference Attribute?
나는 새로운 욕망이 생겼다.
사람 기둥인가...
보충하여 기록하다
동작 검증을 위한 항목이 GitHub 저장소에 게시되었습니다.
azuma560/SerializeReferenceTest
Reference
이 문제에 관하여([Unity] Scriptable Object에서 순수한 종류의 다태성은 작용하지 않습니다.하지만...), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/azumagoro/items/f4b26f4522b1b15ecabd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)