静态变量存储来自1类的值,但不以第2类c#unity显示?
我有三节课静态变量存储来自1类的值,但不以第2类c#unity显示?,c#,unity3d,static,C#,Unity3d,Static,我有三节课 我在其中声明了2个游戏对象的静态类 public static Gameobject attacker; public static Gameobject defender; 我选择攻击方和防御方的攻击组合 它得到的场景和显示值都很好 staticclass.attacker = gameObject; Debug.Log("I am attacker" + staticclass.attacker); 但它并没有在第三类结果类中显示值,你知道怎么做吗 骰子结果 Debu
public static Gameobject attacker;
public static Gameobject defender;
staticclass.attacker = gameObject;
Debug.Log("I am attacker" + staticclass.attacker);
Debug.Log(" ATTAKERRRRRRRRRRRR " + staticclass.attacker);
骰子结果在另一个场景中当你制作游戏对象、组件或任何源于Unity的
静态
的脚本/组件时,当你加载新场景时,它仍将被销毁/清理
如果不希望发生这种情况,则必须在初始化所有这些Unity静态变量后立即调用它们
DontDestroyOnLoad(attacker);
DontDestroyOnLoad(defender);
是否在两次调用之间进行了更改?是否有多个staticclass
?游戏对象的声明?你是说GameObject
?当你运行Debug.Log(“attakerrrrrrrr”+staticclass.attacker”)时,输出是什么代码>?您是否尝试过使用调试器?@LasseV.Karlsen否只有一个静态类。但是我在两个不同的脚本中调用它,在第一个脚本中,我获取值,在第二个脚本中,我尝试访问它们Unity是否卸载具有这些类型的程序集?因为静态字段在对象实例的垃圾收集中幸存下来。我不知道Unity是否会用这些类型卸载程序集。问题是人们把C#System.Object
与Unity的Object
混淆了。Unity中的所有内容都继承自UnityEngine.Object
而非System.Object
。对于Unity的对象,垃圾收集的工作方式非常不同。即使是静态的,它们也会被破坏。例外是基本的原语类型,如int,float…我尝试过,但它仍然显示为null,我在所有脚本中创建了awake函数并调用它,但它仍然显示为null,DontDestroyOnLoad(攻击者);DontDestroyOnLoad(防守队员);