FindObjectOfType<Present>() Returns 空。为什么是这样?
FindObjectOfType<Present>() Returns Null. Why is this?
(是的,我知道它说这是重复的。我也知道这个错误是什么意思。我想弄清楚为什么当前变量为空)
NullReferenceException:对象引用未设置到对象的实例。 Score.Update()
此脚本出错。显然当前变量为空,我正在尝试找出原因。
这是我的乐谱脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class Score : MonoBehaviour
{
public TextMeshPro scoreText;
public Present present;
// Start is called before the first frame update
void Start()
{
present = FindObjectOfType<Present>();
}
// Update is called once per frame
void Update()
{
scoreText.text = present.score.ToString();
}
}
这是我的 Present 脚本(带有分数变量的脚本):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Present : MonoBehaviour
{
public Vector2 velocity;
private double deletionZone = 15;
public int score = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void FixedUpdate()
{
// move to the left
transform.Translate(velocity * Time.fixedDeltaTime);
if (transform.position.x <= -deletionZone)
{
Destroy(gameObject);
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Player")
{
Destroy(gameObject);
score += 10;
}
}
}
我认为这是因为您用大写 P 命名 Present 字段,它应该是小写 - present。
所以public present present;
我前几天修复了这个问题,但是这里没有更新。
显然 FindObjectOfType() 实际上没有 return null,我想我在调试和发布之前做了假设。
无论如何,
而不是使用
public TextMeshPro scoreText;
这是我应该做的:
public TextMeshProUGUI scoreText;
本来可以为我的 game jam 项目节省一天的时间:|
(是的,我知道它说这是重复的。我也知道这个错误是什么意思。我想弄清楚为什么当前变量为空)
NullReferenceException:对象引用未设置到对象的实例。 Score.Update()
此脚本出错。显然当前变量为空,我正在尝试找出原因。
这是我的乐谱脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class Score : MonoBehaviour
{
public TextMeshPro scoreText;
public Present present;
// Start is called before the first frame update
void Start()
{
present = FindObjectOfType<Present>();
}
// Update is called once per frame
void Update()
{
scoreText.text = present.score.ToString();
}
}
这是我的 Present 脚本(带有分数变量的脚本):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Present : MonoBehaviour
{
public Vector2 velocity;
private double deletionZone = 15;
public int score = 0;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void FixedUpdate()
{
// move to the left
transform.Translate(velocity * Time.fixedDeltaTime);
if (transform.position.x <= -deletionZone)
{
Destroy(gameObject);
}
}
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.tag == "Player")
{
Destroy(gameObject);
score += 10;
}
}
}
我认为这是因为您用大写 P 命名 Present 字段,它应该是小写 - present。 所以public present present;
我前几天修复了这个问题,但是这里没有更新。
显然 FindObjectOfType() 实际上没有 return null,我想我在调试和发布之前做了假设。
无论如何,
而不是使用
public TextMeshPro scoreText;
这是我应该做的:
public TextMeshProUGUI scoreText;
本来可以为我的 game jam 项目节省一天的时间:|