深度搜索
组件Component深度搜索
b.GetComponentInChildren<Text>(true).text = name;
这个语句透露两个信息
- 第一个,可以使用getcompont获取组件,然后直接赋值,等同于
- boomName = b.GetComponentInChildren<Text>(true);
- boomName.text= name;
或者
- b.GetComponentInChildren<Text>(true).text = name;
- 第二个,深度搜索GetComponentInChildren<true>
特点:
- 按照子件下标顺序,寻得第一个
- 按照子到孙的顺序,寻得一个
- 即便是未被激活的子物体也会被获取
s
场景物体GameObject深度搜索
GameObject.Find可以搜索到任意深度的物体,用在场景里面的搜索
成功深度搜索
子物体GameObject深度搜索
相机跟随
- 先安装这个插件,右键创建
- 拉入跟随对象
- 加入限制触发器
命名空间namespace
- 将类纳入一个命名空间,当其他类需要调用的时候,需要using导入改命名空间
- 下图可看出,未导入命名空间将无法调用BoomManager类
协程
协程IEnumerable是接口,有了这个才可以foreach
IEenumerator也是接口,必须要实现内部抽象方法才能使得继承IEnumerator的类返回成功,继而实现IEnumerable
返回继承IEnumerator的类 == yield return
实例化Instantiate注意事项
物体实例化的开始会取不到物体身上的组件
调用不到b里面的方法或者是rigidbody
所以进入到BulletController中
在awake中获取到组件
延迟销毁
Destroy(gameObject, 2f);延迟两秒销毁
确定物体类型方法
EnemyController ec = collision.gameObject.GetComponent<EnemyController>();
能创建一个类去接受其他物体中的类,是不是证明
也可以Collision cl = other.getComponent<Collision>
State maine
Unity编辑器小技巧
添加这句话可以使得unity窗口添加一行菜单栏
使用这句话可以在Inspector里面加上一行字
给Inspector添加注释
使文字背景和文字框自适应文字数量的方法:
将text放在背景的子物体位置
添加下面两个组件,注意打钩的地方
似乎锚点设置也有影响Pivot
不能引用语句太长否则会处理不到
用OnEnable可以使得函数在每次物体激活的时候调用一次
定义自变量的时候可以加上跟踪链接
这种方法会使得前面的数值会随着后面的数值变化而变化,static不是必须的
nameof可以打印出参数或者函数的名字
[Range(0,1)]面板生成进度条限制输入值
延迟委托函数
引用数据之后切不可再次用等号,否则会重新关联引用,但是可以用引用数据的下面数据
贝塞尔曲线
Unity 贝塞尔曲线实现抛物线运动,投掷功能实现 - 知乎
/// <param name="t">0到1的值,0获取曲线的起点,1获得曲线的终点</param>
/// <param name="start">曲线的起始位置</param>
/// <param name="center">决定曲线形状的控制点</param>
/// <param name="end">曲线的终点</param>
public static Vector3 GetBezierPoint(float t, Vector3 start, Vector3 center,Vector3 end) { return (1 - t) * (1 - t) * start + 2 * t * (1 - t) * center + t * t * end; }
- string转枚举
差值运算的使用
DOTween动画
协程定时器
位移运算符
unity编辑器注意事项
不能在物体销毁前调用一些函数,这样会使得这些函数调用失败。
刚刚实例化物体的时候,想要先调用到一某个脚本函数,之后再去调用这个脚本的其他函数的时候,可以吧需要的函数,放在awake里
调用其他函数必然先得发生了awake
射线中的layer Mask
- 这个layerMask为二进制,
- 而且第六层不是0110,而是100000;
- 用layermask.getmask() = 64,100000
- 不是layermask.NameToLayer() = 6,0110
这里介绍引入
layout组件的使用
容器适应子物体大小
- 1.content size fitter
- 2.layout element
子物体
选择preferred会首选长宽
父物体
Image Type图片类型
Simple
Simple类型,顾名思义简单类型,这种类型的image在拉伸过程中,整体会发生均匀形变,并且始终有两个三角面。
Sliced
四个角不会拉伸
Tiled
Tiled是平铺,他会把拉伸部分重复显示,四个角位置除外,在拉伸过程中,也是重复显示的过程
枚举
flag枚举
实例化
MonoBehaviour:引用了该接口的脚本,会自动包含一个base属性,直接new会赋予null
但是可以索引到其他属性不报错
==与equals
unity中,==可以代替equals,
==作用
- 对比数值
- 引用数据的地址
但是string 和enum在unity中可以当做数值去对比;
位运算符和移位运算符 - 对整数类型中的单个位执行布尔(AND、NOT、OR、XOR)和移位运算 | Microsoft Learn
用这个方法去关闭某一层;
树冲突
结构体和类的区别(Struct 和 Class)
类中的两个字典,存的是struct 和 class
调用字典里面的值
改变两个值,发现只有在class中的数据能够被检测到。
而且struct的值是不能为null的,就和一个普通的数值一样