Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.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
C# NullReferenceException,如何解决此问题_C#_Unity3d - Fatal编程技术网

C# NullReferenceException,如何解决此问题

C# NullReferenceException,如何解决此问题,c#,unity3d,C#,Unity3d,Unity表示在void update()中出现了问题 关于这可能是什么有什么想法吗 我在下面定义了所有变量,但Unity说某些对象引用没有设置为对象的实例 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class GameStatus : MonoBehaviour { public Text PointsCount

Unity表示在void update()中出现了问题

关于这可能是什么有什么想法吗

我在下面定义了所有变量,但Unity说某些对象引用没有设置为对象的实例

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class GameStatus : MonoBehaviour
{
    public Text PointsCounter;

    public int FightPoints = 0;
    public int FightDamage = 1;


    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        PointsCounter.text = "Points: " + FightPoints;
    }

    private void Awake()
    {
        DontDestroyOnLoad(gameObject);

    }
}

您从未创建
pointsconter
的实例,因此当您点击
pointsconter.text=“Points:”+FightPoints

实例化
PointsCenter

使用系统集合;
使用System.Collections.Generic;
使用UnityEngine;
使用UnityEngine.UI;
公共类游戏状态:单一行为
{
公共文本点中心;
公共int战斗点=0;
公共int战斗伤害=1;
//在第一帧更新之前调用Start
void Start()
{
PointsCenter=new Text();//可能有效,也可能无效;取决于UnityEngine.UI.Text是否有空构造函数;可能没有,如果没有,请参阅下面的说明
}
//每帧调用一次更新
无效更新()
{
pointsconter.text=“点:”+战斗点;
}
私人空间
{
DontDestroyOnLoad(游戏对象);
}
}

不过,考虑到您使用的是Unity,
PointsCenter
可能需要使用编辑器进行分配。转到您的Unity层次结构,并确保具有此
GameStatus
行为的
GameObject
在UI中设置了
PointsCenter
属性。使用
new
操作符创建类型为
UnityEngine.UI.Text
的新实例是一种不好的做法。@0xBFE1A8谢谢;我并不完全确定UnityEngine.UI的内部工作方式,但我有一种强烈的感觉,那就是它不是通过代码来实例化的。不过,考虑到您使用的是Unity,可能需要使用编辑器来指定PointsCenter。转到您的Unity层次结构,并确保具有此GameStatus行为的游戏对象在UI中设置了PointsCenter属性。您能澄清一下吗?@0xBFE1A8不仅是“坏习惯”,而且是绝对禁止!大多数Unity内置类类型都禁止使用
new
关键字,只有少数例外;)UnityScript是为Unity创建的Javascript派生。C#是一种完全不同的语言。请决定您正在使用哪种语言(提示:它是C#,而不是UnityScript)。@John\u此外:UnityScript已被弃用。C#现在是唯一受Unity支持的语言(当然,本地插件除外)