前提・実現したいこと
UnityでInstantiateによる複製をした際、アタッチされたComponent内変数のインスタンス化された派生クラスが、基底クラスにならないようにすることは可能でしょうか?
GameOnjetにアタッチされたObject.csの変数objClassに、SubClassをインスタンス化、代入した後、GameOnjetをInstantiateで複製すると、objClassの中身がBaseClassになってしまいます。
該当のソースコード
C#
1using UnityEngine; 2 3public class Main : MonoBehaviour 4{ 5 public Object obj; 6 void Start() 7 { 8 obj.objClass = new SubClass(); 9 obj.Act(); 10 11 Object dObj = Instantiate( obj ).transform.GetComponent<Object>(); 12 dObj.Act(); 13 } 14} 15 16[System.Serializable] 17public class BaseClass { 18 public virtual void Action() { 19 Debug.Log( "BaseClass" ); 20 } 21} 22 23[System.Serializable] 24public class SubClass : BaseClass { 25 public override void Action() { 26 Debug.Log( "SubClass" ); 27 } 28}
C#
1using UnityEngine; 2 3public class Object : MonoBehaviour { 4 public BaseClass objClass; 5 6 public void Act() { 7 objClass.Action(); 8 } 9}
表示されるメッセージ
SubClass Main:Start() (at Assets/DupricateTest/Main.cs:12) BaseClass Main:Start() (at Assets/DupricateTest/Main.cs:15)
バージョン
Unity 2019.3.2.f1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/27 14:40
2020/09/27 15:16
2020/09/27 15:37
2020/09/27 15:57