Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
静态变量存储来自1类的值,但不以第2类c#unity显示?_C#_Unity3d_Static - Fatal编程技术网

静态变量存储来自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

我有三节课

  • 我在其中声明了2个游戏对象的静态类

    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(防守队员);