gpt4 book ai didi

.net - System.Activator.CreateInstance 返回 null

转载 作者:行者123 更新时间:2023-12-01 15:44:46 24 4
gpt4 key购买 nike

我遇到的问题是 CreateInstance 返回 null。

代码如下:

if(spattmono[0] != null)
{
if((SpecialAttack) System.Activator.CreateInstance(
spattmono[0].GetClass()) == null)
{
Debug.Log("DUMB ACTIVATOR!!!");
}

//combo.SetSpecialAttack(spattack);
}

AttackSpecialAttack都是存储基本信息的类,继承自UnityEngine.Object

Attmonospattmono 都是 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!!!");
}

它确实是空的,所以这让我相信 Activator 找不到类型,所以我不确定从这里做什么。

最佳答案

让我们假设 Activator.CreateInstance 确实正常工作,那么提供给方法调用的参数一定有问题。 (因此问题较早)。

由于不了解传递给 CreateInstance 的实际值,我猜测但我怀疑传递的值是 null 或者是内部类型但驻留在不同的程序集中或类似的访问问题。

关于.net - System.Activator.CreateInstance 返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7137884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com