关于在Unity中实例化脚本的问题

来源:互联网 发布:我爱摇滚乐 知乎 编辑:程序博客网 时间:2024/06/06 01:58

我们在学c#基础的时候,大家都知道想要获取一个实例类里面的公有成员,就必须在调用的时候实例化这个类。

比如有一个A类

class  A

{

  public int  age;

}


class Progress

{

    void Main()

     {

A a = new A();//实例化A类  也称实例化对象

                a.name;

Console.WriteLine(name);


     } 

}


那么如果在Unity中你想实例化一个继承了MonoBehaviour的一个B类呢? 这样还可以吗?

比如有一个B类:

class  B  : MonoBehaviour

{

  public int  age;

}


class C : MonoBehaviour

{

     B b; 声明

    void Start()

     {

                b = new A();//实例化B类  也称实例化对象

                 b.name;

print(b.name);

     } 

}

如果像上面那样写的话,打印出来的b.name是空的,null。愿意很简单。

因为在Unity中除了对象之外都是组件,就是说继承了MonoBehaviour的类想要运行,那么必须要挂在游戏物体上(GameObject)。也就是说此时 B类 已经是一个组件了。

所以我们就要以GetConponent<B>(); 的形式去访问了。不能new。

当然你做一个单例 public static C _instance;//单例访问也可以,GameObject.FindObjectOfType<GameObject>();查找类型也可以。

方式有很多,我们这里说的是为什么不能new,大家明白这个意思就好了,个人理解,有错误的,遗漏的地方还请多多留言。







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