感觉自己抑郁变得更严重了,超级敏感,经常想崩溃大哭,睡眠超差,实在不想药物治疗,多看看书,多约约朋友,多出去走走。

来几句鸡汤吧,人一定要活得明白一点,任何关系都不要不清不楚,说不定最后受伤的就是自个。另外,内心尽量变得强大一点,这样世界便会美好很多。

ok,吐槽到此,开始正题吧,今天说几个unity的常用知识点,最近博客更得比较少,好像更习惯用有道笔记。

1.GetComponentInChildren()、GetComponentsInChildren() 包含自己和所有子对象
 
2.Instantiate
GameObject newGo = Instantiate (GameObject.Find("Cube"),Vector3.zero,Quaternion.identity,GameObject.Find("Father").transform);
newGo 的世界坐标Vector3.zero,世界旋转Quaternion.identity,父对象GameObject.Find("Father").transform
 
3.计算物体大小
总的来说三种方式:分别可通过 MeshRenderer,MeshFilter,collider这3个组件来获取。
 
(1)根据 MeshRenderer这个值的结果 真实反应出有MeshRenderer这个组件的模型的尺寸。不需要再乘以localScale.x。
 
(2)通过MeshFilter获得原始模型的mesh,该值返回的结果是原始mesh的尺寸。
若要获得模型的尺寸大小还需要乘以模型的localScale.x。
即:gameObject.GetComponent<MeshFilter>().mesh.bounds.size.x*gameObject.transform.localScale.x;
 
(3)为物体添加Collider,然后使用XXX.collider.bounds.size;
这个不一定能很好的反应物体的大小,bounds获得的是物体的外包矩形。而且这个外包矩形的X,Y,Z和世界坐标一致。因此,若物体有旋转,获得的尺寸就不能反应出物体的真实大小,只是其外包矩形的大小。。。
如:获得terrain的尺寸

 terrainWidth = terrain.collider.bounds.size.x;
terrainLength = terrain.collider.bounds.size.z;
terrainHeight = terrain.collider.bounds.size.y; 
个人偏爱 (2)
获取复杂物体的真实尺寸
//计算物体真实尺寸
public static Vector3 getTargetSizeByRender(GameObject target){
Vector3 vec = Vector3.one;
Quaternion localQuaternion = target.transform.rotation;
target.transform.rotation = Quaternion.identity;
var renders = target.transform.GetComponentsInChildren<Renderer> ();
if (renders.Length > 0) {
Bounds bounds = renders [0].bounds;
for (int i = 1; i < renders.Length; i++) {
bounds.Encapsulate (renders [i].bounds);
}
vec = bounds.size;
}
target.transform.rotation = localQuaternion;
return vec;
}

  当物体中有粒子特效,会影响计算结果,这时判断renders [i]的gameObject是否有粒子系统组件,如果有,将循环continue调就行了。总之,根据自己的项目需求在这个基础上做一些计算优化就行了,多动动脑筋。

 
4.Invoke()
Invoke是一种委托方法。
void Invoke(string methodName, float time) ,第一个参数是要调用的函数名,后一个参数是延迟的时间。
意思为:在time时间后调用函数名为methodName方法。设置完methodName函数的执行时间后,程序会接着往下执行,并不会等methodName函数执行。而协程可以等某个操作完成之后再执行后面的代码。
使用 Invoke() 方法需要注意 3点:
(1)它应该在 脚本的生命周期里的(Start、Update、OnGUI、FixedUpdate、LateUpdate)中被调用;
这个不是很明白,例如下面代码
void Start () {
Test ();
Debug.Log ("start");
}
void TestInvoke(){
Debug.Log ("TestInvoke");
}
void Test(){
Debug.Log ("Test");
Invoke ("TestInvoke",5f);
}
 
中 TestInvoke 可以被调用。
(2)Invoke(); 不能接受含有 参数的方法;
(3)在 Time.ScaleTime = 0; 时, Invoke() 无效,因为它不会被调用到
Invoke() 也支持重复调用:void InvokeRepeating(string methodName, float time, float repeatRate);
意思是指:time秒后调用 调用函数名为methodName方法,并且之后每隔 repeatRate秒调用一次调用函数名为methodName方法。

unity常用小知识点的更多相关文章

  1. css常用小知识点汇总(一)

    1.文本过多溢出,怎么让他隐藏变成点点点(...)呢? text-overflow:ellipsis;overflow:hidden;display:-webkit-box;-webkit-line- ...

  2. sql server 常用小知识点

    1. sql server的语法:中文要加 N select * from eVA_EMPBoard where name = N'施纪平' 而oracle的不用 2.

  3. php 常用 小知识点

    PHP 邮箱正则表达式代码如下: /^([a-z0-9])(([-a-z0-9._])*([a-z0-9]))*\@([a-z0-9])*(\.([a-z0-9])([-a-z0-9_-])([a-z ...

  4. oracle常用小知识点

    alter table us_studies modify enroldate  default to_char(sysdate,'yyyy-mm-dd'); ALTER TABLE QS_QUEUE ...

  5. [BS] 小知识点总结-05

    [BS] 小知识点总结-05 1. 不论UIWindow的rootViewController是navC.tabBarC还是VC,也不管modalVC和rootVC中间隔着多少个VC,但是modal出 ...

  6. Perl小知识点之排序sort

    脚本这种东西,就是要常用,否则一段时间不用就生疏了,因此决定时时记一些小知识点,一来回顾一下,二来需要的时候可以迅速获得提示. Sort by number You could now write a ...

  7. python中的小知识点

    这里是一些小知识点的汇集,为的是以后查找的方便. 行与缩进: 物理行:实际看到的代码行数. 逻辑行:在意义上的函数(即解释器执行的行数) 如果一个物理行中包含了多个逻辑行,则每个逻辑行之间需要用分号 ...

  8. 数学小知识点整理(TBC)

    文章目录 前言 素数与同余 线性筛部分 素数 线性递推逆元 指数循环节降幂 当求逆元时模数与求逆元的数有可能不互质时的处理方法 一个神奇的结论 拓展欧拉定理 杂乱的一些性质/技巧 二进制枚举子集 异或 ...

  9. Unity常用常找(二)

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/51315050 作者:car ...

随机推荐

  1. scala学习——(1)scala基础(上)

    scala> val x = 1 x: Int = 1 一.值与变量 值(val):赋值后不可变 val值名称:类型 = XXX 变量(var):赋值后可以改变  var变量名称:类型 = XX ...

  2. 【拾遗】理解Javascript中的Arguments

    前言 最近在看JavaScript相关的知识点,看到了老外的一本Javascript For Web Developers,遇到了一个知识盲点,觉得老外写的很明白很透彻,记录下来加深印象,下面是我摘出 ...

  3. Jmeter(二十三)_插件扩展

    Jmeter插件管理器 安装插件的方法有两种,一种是传统的方式,即官网下载,本地配置,重启jmeter.现在有一种快捷的方法可以自定义安装插件-插件管理器 JMeter 插件管理器的使用方法很简单:不 ...

  4. 前端项目模块化的实践3:使用 TypeScript 的收益

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

  5. CentOS 6.8 安装Tomcat7

    一.下载Tomcat到服务器上 将Tomcat包下载到devleoper(没有此目录创建一个)目录下: 二.解压安装包 下载好之后,直接解压,使用命令: .tar.gz # 是否使用sudo权限执行根 ...

  6. 使用VSCode调试单个PHP文件

    突然发现是可以使用 VSCode 调试单个 PHP 文件的,今天之前一直没有弄成功,还以为 VSCode 是不能调试单文件呢.这里记录一下今天这个"突然发现"的过程. 开始,是在看 ...

  7. 《Pro SQL Server Internals, 2nd edition》中CHAPTER 7 Designing and Tuning the Indexes中的Clustered Index Design Considerations一节(译)

    <Pro SQL Server Internals> 作者: Dmitri Korotkevitch 出版社: Apress出版年: 2016-12-29页数: 804定价: USD 59 ...

  8. [Hanani]JAVA大数相关学习记录

    1.Basic remains 题目链接 涉及内容: |大数读入|大数模|大数进制读入时转化为十进制|大数输出时转化为其他进制输出| import java.io.*; import java.mat ...

  9. PAT甲题题解-1048. Find Coins (25)-水

    给n,m以及n个硬币 问,是否存在两个硬币面值v1+v2=m 因为面值不会超过500,所以实际上最多500个不同的硬币而已 #include <iostream> #include < ...

  10. 个人作业3——个人总结AlPha阶段

    一.Alpha版本的总结 1.感受 Alpha版本已经结束了,回顾整个过程,我最大的遗憾就是项目完成得不是很理想,同时觉得自己做得不够多.不够好. 2.我做了哪些工作 数据库的连接,部分团队博客:部分 ...