Unity3D的MonoBehaviour与Component与Tranform与GameObject
Unity3D的MonoBehaviour与Component与Tranform与GameObject
- C#的修饰符internal,default,virtual,sealed
- private:不加scope修饰符则为private(不建议这样使用)
- internal:internal的作用域为一个工程
- virtual与sealed:virtual表示子类可以override,sealed不行,C#不写virtual则默认为sealed
- Unity会自动调用Start,Update等方法即使他们为private
- MonoBehaviour,Component,Tranform,GameObject
- 了解GameObject
- 把GameObject连接起来的Transform
- 在Unity中写的脚本就是Component
- 脚本之间如何互相关联
- Unity里面拖拽
- GameObject内部的互相引用
- 两个互相连接的GameObject之间的内部脚本互相引用
- 总结
转自:unity3d–MonoBehaviour与Component与Tranform与GameObject
这篇文章从一个Empty的MonoBehaviour入手,首先讨论一下C#的修饰符internal,default,virtual,sealed
接着讨论一下MonoBehaviour,Component,Tranform,GameObject之间的关系 及脚本之间的如何互相关联
C#的修饰符internal,default,virtual,sealed
从一个空类说起
using UnityEngine;
using System.Collections;public class EmptyClass : MonoBehaviour {// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {}
}
随便在工程中建立一个C#脚本,Unity就替我们生成了这个空类. 里面包含有两个方法Start,Update.
首先让我们抛开这两个方法的作用不谈,先来谈谈这两个函数的写法.
EmptyClass : MonoBehaviour 这个很简单,表示Empty继承自MonoBehaviour 。在Java或者AS中用extends这里用分号 这个无所谓了.
不过 void Start () {} 这行代码就很奇怪了. 前面没有任何的修饰符(priate,protected,public). 那这到底什么意思呢?
private:不加scope修饰符则为private(不建议这样使用)
google一下有篇文章给出了很好地解释
Should private members be declared explicitly as private in idiomatic C#?
http://www.4byte.cn/question/543979/should-private-members-be-declared-explicitly-as-private-in-idiomatic-c.html
文章说的很清楚,在C#中如果不加任何的scope修饰符则默认为private,不过几个Answer(我也赞同)不要使用这种方式,还是显示的加上private为好。
internal:internal的作用域为一个工程
internal这个应该不太能用到,不过还是提一句吧. 也是在我无意中搜索到的,网上文章说的不是很清楚 所以我重新做了一个Demo,
正好也验证了defult的作用域
这张图就是整个workspace的结构,每个Solution就是一个个的工程,
而按图来说如果在LibSolution中定义了internal则MainSolution是访问不到的
LibA中定义了internal的变量及方法,如下图:
在同一个Solution内,其子类和非子类对其的访问权限,如下图:
在不同的Solution下对其的访问权限,如下图:
virtual与sealed:virtual表示子类可以override,sealed不行,C#不写virtual则默认为sealed
这个很好理解,不过正好和Java反过来,Java是需要受到final掉才可以,如果有兴趣可以阅读这篇文章
http://stackoverflow.com/questions/1327544/what-is-the-equivalent-of-javas-final-in-c
Unity会自动调用Start,Update等方法即使他们为private
让我们再回头看Unity为我们创建的那个空类,里面只有两个方法 并且两个方法都没有写作用域,我们刚才也提到 没写作用域就是private的
那Unity为何能调用到这个函数呢?
http://stackoverflow.com/questions/24772681/c-sharp-when-do-i-need-override-when-dont-i-need-it
万能的stackoverflow 有人已经给出了解释 :单从语言的角度来说是不行的,除非你使用反射(反射可以访问private),不过Unity并没有这么使用
我也不知道他们怎么做的…(应该就是反射吧)
不管怎样 就可以理解为Unity搞定了这个问题
Unity3D的MonoBehaviour与Component与Tranform与GameObject相关推荐
- Unity3D 动画控制器 Animator Component
文章目录 Animator 组件 Animator Controller 动画控制器 自建状态 1.右键菜单 2.在状态上右键 3.Animator Layers 4.Animator Pameter ...
- Unity3D入门基础之游戏对象 (GameObject) 和组件 (Component) 的关系
原文出处:http://edu.china.unity3d.com/learning_document/getData?file=/Manual/TheGameObject-ComponentRela ...
- 用Unity3D的50个技巧:Unity3D最佳实践
http://bbs.9ria.com/thread-416805-1-1.html 刚开始学习Unity3D时间不长,在看各种资料.除了官方的手册以外,其他人的经验也是非常有益的.偶尔看到老外这篇文 ...
- Unity3D 单例模式
简洁 在游戏开发中会经常使用到单例模式,什么时候会用到单例模式呢?有一些数据会在整个游戏(程序)生命中一直持续到游戏结束的数据.例如:玩家数据. 代码 提供两种单例: C#中的单例. Unity3D继 ...
- Unity3D核心类型一览
原文 http://www.cnblogs.com/bitzhuwei/p/unity-core-types.html 主题 Unity3D Unity3D核心类型一览 本文记录了Unity3D的最 ...
- Unity3D的50个技巧:Unity3D最佳实践
http://blog.csdn.net/neil3d/article/details/38534809 刚开始学习Unity3D时间不长,在看各种资料.除了官方的手册以外,其他人的经验也是非常 ...
- 【Unity3D基础教程】给初学者看的Unity教程(一):GameObject,Compoent,Time,Input,Physics...
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点推荐.谢谢! Unity3D重要模块的类图 最近刚刚完成了一 ...
- Unity3d 周分享(18期 2019.6.1 )
选自过去1~2周 自己所看到外文内容:https://twitter.com/unity3d 和各种其他博客来源吧 1. 1)Unity x Android Studio混用經驗分享---Laird ...
- unity3d 脚本参考-技术文档
unity3d 脚本参考-技术文档 核心提示:一.脚本概览这是一个关于Unity内部脚本如何工作的简单概览.Unity内部的脚本,是通过附加自定义脚本对象到游戏物体组成的.在脚本对象内部不同志的函数被 ...
最新文章
- linux下出现ping:unknown host www.baidu.com问题时的解决办法——ubuntu下局域网络的配置...
- mysql root密码忘记2018_2018-03-28设置及修改mysql用户密码学习笔记
- Linux学习笔记12——配置ftp、squid、Tomcat、Samba、MySQL主从
- 字典树+博弈 CF 455B A Lot of Games(接龙游戏)
- PL/SQL Developer远程连接Oracle数据库
- STM32电机库(ST-MC-Workbench)学习记录——无感FOC代码生成
- 万年历单片机课程设计百度文库_单片机课程设计报告(万年历)
- EViews-蒙特卡洛模型代码
- Linux 网站推荐
- RPC框架简析--Pigeon
- indesign怎么拼图_用R来拼图和排版,告别AI和PS(二):调节宽度和高度
- halo_Halo 3评论
- vue3.0之-watch全面解析
- 【Matlab编程】新手入门第五天
- 嵌入式应用角度学习BLE栈
- 点或积分区域的对称性,积分结果的对称性
- Jackson配置大全
- Python自述和简介
- POI:java导出excel,java设置单元格公式,求和
- 再次遇到ORA-04030的错误