[Unity] Scriptable Object에서 순수한 종류의 다태성은 작용하지 않습니다.하지만...

4532 단어 UnityC#Unity2019

배경


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

좋은 웹페이지 즐겨찾기