我遇到的問題是CreateInstance
返回null。System.Activator.CreateInstance返回null
下面是代碼:
if(spattmono[0] != null)
{
if((SpecialAttack) System.Activator.CreateInstance(
spattmono[0].GetClass()) == null)
{
Debug.Log("DUMB ACTIVATOR!!!");
}
//combo.SetSpecialAttack(spattack);
}
Attack
和SpecialAttack
是存儲基本信息兩類,並從UnityEngine.Object
繼承。
Attmono
和spattmono
都是MonoScript
陣列,attmono
能夠保持16 spattmono
能夠保持4
他們從這些有信息。
for(int at = 0; at < numberOfAttacks; ++at)
{
attmono[at] = (MonoScript) EditorGUILayout.ObjectField(attmono[at],
typeof(MonoScript), false);
}
for(int spat = 0; spat < 4; ++spat)
{
spattmono[spat] = (MonoScript) EditorGUILayout.ObjectField(
spattmono[spat], typeof(MonoScript), false);
}
你能想到的MonoScript
一樣的東西,擁有對象是什麼類的類型。 我已經用Debug.Print
語句檢查了其中的每一個,並且在分配時都不爲空。
這是SpecialAttack
的代碼。
public class SpecialAttack : UnityEngine.Object
{
public string Name;
public int Damage;
public int Force;
public float Cooldown;
public SpecialAttack()
{ }
public virtual bool Run()
{
return false;
}
}
,我最近測試了這個
if((SpecialAttack)System.Activator.CreateInstance(spattack.GetType()) == null)
{
Debug.Log("DUMB ACTIVATOR!!!");
}
而且它的確是零,所以這讓我相信,激活找不到的類型,所以我不會給知道該怎麼在這裏做。
什麼是'Attack','SpecialAttack'? 'spattmono []'和'attmono []'數組中有什麼,你是如何創建它們的。你需要擴大這個問題,任何人都可以有一個合理的機會來回答這個問題。 – Kev
添加了更多信息。 – Diddykonga
當CreateInstance返回null時,'spattmono [0] .GetClass())會返回什麼? –