一、现象
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”