关于Unity3D 引用类型变量new之后,任然为null 的 解决办法.

来源:互联网 发布:守望先锋数据 编辑:程序博客网 时间:2024/06/07 18:30


一、现象

using System.Collections;

using System.Collections.Generic;
using UnityEngine;
public class ClassTest:MonoBehaviour  {

    public string Mystring;

    public ClassTest( string IN )
    {
        this.Mystring = IN;
      
    }

}


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Test : MonoBehaviour {
   
    void Start () {
        //gameObject.AddComponent<ClassTest>().Mystring=" a new item!";
        //ClassTest item = transform.GetComponent<ClassTest>();

        ClassTest item = new ClassTest("a new item!");

        if (item == null)
            print("item is null");
        else
            print("item is not null");
    }

}


控制台打印结果: “ item is null”


解决办法 1)  ClassTest 不继承 MonoBehaviour  ,因为MonoBehaviour不能通过New实例化 

解决办法 2)  ClassTest 继承 MonoBehaviour  ,但是实例化的方式不是new

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

public class Test : MonoBehaviour {
   
    void Start () {
        gameObject.AddComponent<ClassTest>().Mystring = " a new item!";
        ClassTest item = transform.GetComponent<ClassTest>();

        //ClassTest item = new ClassTest("a new item!");

        if (item == null)
            print("item is null");
        else
            print("item is not null");
    }


}


控制台打印结果: “ item is not null”






阅读全文
0 0
原创粉丝点击