无法访问成员函数中的类变量

桑格拉图拉

在Unity C#脚本中,我有一个单例游戏控制器对象,其中存储了游戏变量,但是在成员函数中访问它们时出现奇怪的行为。它打印初始化值,而不是当前值。但是,在更新功能中,它会每帧打印正确的值。我总结了下面的课程。控制器类具有对自身的静态引用。如果您需要了解其他详细信息,可以询问。我是C#和Unity的新手,所以我可能缺少一些明显的答案。

谢谢

public class controller : MonoBehaviour {

    public int[] star = new int[64];

    void Start(){ /* calls another function to set 0 for each star index */ }

    void Update(){  // during gameplay star[0] gets a value of 1
        print(star[0]);  // prints correct value which is 1
    }

    public void checkValue(){
        print(star[0]); // prints 0 incorrectly which should be 1     
    }


}
Gunnar B.

我已经建立了一个小例子。我创建了一个按钮和一个空的游戏对象GameController我将此代码添加到GameController

using UnityEngine;
using System.Collections;

public class GameController : MonoBehaviour {

    public static GameController instance;

    [System.NonSerialized] public int[] star = new int[64];

    private void Awake()
    {
        if(instance == null)
            instance = this;
        else if(instance != this)
            Destroy(gameObject);

        DontDestroyOnLoad(gameObject);
    }

    private void Start()
    {
        StartCoroutine(SetAllTo(1));
    }

    // for simulating some changes during the game
    private IEnumerator SetAllTo(int value)
    {
        yield return new WaitForSeconds(2.0f);

        for(int i = 0; i < star.Length; i++)
            star[i] = value;

        Debug.Log("Setting done");
    }

    public void PrintFirst()
    {
        Debug.Log(star[0]);
    }
}

现在,我向OnClick按钮添加了一个事件,将GameController游戏对象拖到插槽中并选择了PrintFirst

我开始游戏,在“协程”日志之前单击一次,然后单击一次,控制台显示以下内容:

0
Setting Done
1

编辑:
OnClick事件的游戏对象必须在场景中,不能是Assets文件夹中的预制件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Javascript类成员函数通过setInterval调用成员函数,无法访问成员变量

派生类中的函数无法访问基类中的成员

Python静态方法无法访问成员/类变量

async.series 函数无法访问容器类的成员

打字稿:无法访问继承的类构造函数中的成员值

无法访问Android活动中onOptionsItemSelected中的成员变量

无法访问在类中声明的私人成员

无法访问派生类中的受保护成员

无法访问在“士兵”类中声明的私人成员

无法访问类变量

“无法访问未初始化的变量。” 在类构造函数中

为什么此javascript函数无法访问同一类中的变量?

无法访问类的向量成员

无法访问对象成员变量

无法访问PHP中的全局变量-“致命错误:在非对象上调用成员函数query()”

无法访问ruby / rails中的类变量?

无法访问父类中的全局变量(python)

无法访问子类中的父类变量值

在类中无法访问部分应用的函数

ajax回调函数无法访问vuejs中的变量

无法访问Lambda函数中的环境变量

`在[模板类]的实例中[成员]被保护[。。。] [公共成员]无法访问'

访问虚函数中的派生类成员变量

在 Java 中访问对象的字段值 - 无法访问类 java.lang.IllegalAccessException 的成员

为什么继承的类的实例无法访问不同包中基类的受保护成员

无法访问在类中声明的私有成员:队列类模板

无法访问SceneDelegate类变量/属性

我无法访问基类的函数

无法访问静态类函数?