qq_35219692
qq_35219692
采纳率54.5%
2016-06-24 06:38 阅读 1.8k

unity3d c#调用脚本报错

using UnityEngine;
using System.Collections;

public class Destorybycontact : MonoBehaviour {
public GameObject explosion;
public GameObject playerexplosion;
public int score1;
private Gamecontrol game;

void start()
{
    GameObject gamecontrolobject = GameObject.FindWithTag("GameController");
    if (gamecontrolobject != null)
    {
        game = gamecontrolobject.GetComponent<Gamecontrol>();
    }
    if(gamecontrolobject == null)
    {
        Debug.Log("can't find 'Gamecontrol' scipt");
    }
}

void OnTriggerEnter(Collider other)
{
    if (other.tag == "boundary")
    { return; }
    Instantiate(explosion, transform.position, transform.rotation);
    if (other.tag == "Player")
    {
        Instantiate(playerexplosion, other.transform.position, other.transform.rotation);
    }
    game.addScore(score1);
    Destroy(other.gameObject);
    Destroy(gameObject);
}

}

报错NullReferenceException: Object reference not set to an instance of an object。显示这个是空值game.addScore(score1);。也不知道为什恶魔,求解

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • herozhangbz herozhangbz 2016-06-24 06:44

    你应该这么写吧

         GameObject gamecontrolobject = GameObject.FindWithTag("GameController");
        if (gamecontrolobject != null)
        {
            game = gamecontrolobject.GetComponent<Gamecontrol>();
            game.addScore(score1);          
        }
        else
            Debug.Log("can't find 'Gamecontrol' scipt");
    
    
    
    

    你都不能确定game得到有效赋值,你就给加力明显不对的

    点赞 评论 复制链接分享
  • herozhangbz herozhangbz 2016-06-24 07:04

    我是渣渣你试试下面这个

         void start()
        {
    
        }
    
        void OnTriggerEnter(Collider other)
        {
        if (other.tag == "boundary")
        { return; }
        Instantiate(explosion, transform.position, transform.rotation);
        if (other.tag == "Player")
        {
            Instantiate(playerexplosion, other.transform.position, other.transform.rotation);
        }
         GameObject gamecontrolobject = GameObject.FindWithTag("GameController");
        if (gamecontrolobject != null)
        {
            game = gamecontrolobject.GetComponent<Gamecontrol>();
            game.addScore(score1);          
        }
        else
            Debug.Log("can't find 'Gamecontrol' scipt");
        Destroy(other.gameObject);
        Destroy(gameObject);
    }
    
    点赞 评论 复制链接分享
  • qq_23154467 RemoveIt 2016-08-17 10:13

    空指针,找一下报错的地方的代码,看一下什么东西没找到,这种小问题,好解决

    点赞 评论 复制链接分享

相关推荐