大家好,这是我的播放器spawn的代码但是我得到了nullreferenceexception :(
using UnityEngine;
using System.Collections;
public class PlayerSpawn : MonoBehaviour
{
public Transform playerSpawn;
public Vector2 currentTrackPosition;
public bool activeRespawnTimer = false;
public float respawnTimer = 1.0f;
public float resetRespawnTimer = 1.0f;
// Use this for initialization
void Start ()
{
if(playerSpawn != null)
{
transform.position = playerSpawn.position;
Debug.Log(playerSpawn);
}
}
// Update is called once per frame
void Update ()
{
if(activeRespawnTimer)
{
respawnTimer -= Time.deltaTime;
}
if(respawnTimer <= 0.0f)
{
transform.position = currentTrackPosition;
respawnTimer = resetRespawnTimer;
activeRespawnTimer = false;
}
}
void OnTriggerEnter2D(Collider2D other)
{
//我在这个位置获取错误信息
if(other.tag == "DeadZone")
{
activeRespawnTimer = true;
}
if(other.tag == "CheckPoint")
{
currentTrackPosition = transform.position;
}
}
}
我在Unity中获得此错误nullreferenceexception对象引用未设置为对象统一的实例。 我是新手。谢谢你的帮助。
答案 0 :(得分:1)
鉴于您提到空位引用异常的位置,看起来好像other
或other.tag
为空。考虑到OnTriggerEnter
仅在实际对象进入触发器时被调用,我高度怀疑other
是否为空,除非它在被调用方法之前被销毁。无论如何,安全比抱歉更好。
一个简单的解决方案如下:
void OnTriggerEnter2D(Collider2D other)
{
if(other != null && other.tag != null)
{
if(other.tag == "DeadZone")
{
activeRespawnTimer = true;
}
if(other.tag == "CheckPoint")
{
currentTrackPosition = transform.position;
}
}
}
如果这仍然引发异常,那么它必定是造成问题的其他因素,所以让我知道这是如何解决的。