UGUI 事件监听
1.拖拽
2.代码添加
3.通过实现接口
Cancas空间:
Button:开关 Slider:拖动框 Dropdown:下拉框
Toggle:单击框
UGUI 事件监听
1.拖拽
2.代码添加
3.通过实现接口
Cancas空间:
Button:开关 Slider:拖动框 Dropdown:下拉框
Toggle:单击框
代码段分析:
Physics.Raycast(ray,1);
一共有16种重载方法,有许多重复的,其中
第二种:有可以设置射线检测的长度大小的方法
第三种:out变量,可以传递碰撞到的信息及变量
需要设置,创建新的变量。
RaycastHit hit;
输出碰撞到的碰撞器,碰撞到的位置
Debug.Log(hit.collider);
Debug.Log(hit.point);
第五种:射线,长度,碰撞层(只和此层发生碰撞)
Physics.Raycast(ray,Mathf.Infinity,LayerMask.GetMask("Enemy1"));
LayMask.GetMask("Enemy1","Enemy2","UI");
多个层发生碰撞的方法
第六种:射线,碰撞信息,长度
此后其他种均为起点,方向,长度,碰撞信息,碰撞层的混合类
问题:
还有一个类Siki教程里未明说
代码段分析:
Ray ray = new Ray(transform.position,transform.forward);
bool isCollider = physics.Raycast(ray);
射线检测需要创建一个射线,指定一个点和方向
射线检测返回的是一个布尔值,用布尔型变量进行接收
再显示在控制台
问题解决:
设置的起点发射有可能和自身发生碰撞,所以最好把起点位置往前移动一些
Ray ray = new ray(transform.position+transform.forward,transform.forward);
一个transform.forward代表往前一米的意思
协程方法:1.返回值是IEnumerator
2.返回参数的时候使用yield return null/0
3.协程方法的调用StarCoroutine(方法名())
课10如何用代码给物体添加组件
GameObject go= GameObject.CreatePrimitive(PrimitiveType.cube);
go.AddComponent<Rigidbody>();//添加一个刚体组件;
go.AddComponent<脚本的名字>();//给物体添加一个脚本组件;
课11如何禁用和启用一个游戏物体
activeinHierarchy activeSelf&&tag;
activeinHierarchy 是一个bool类型,表示该物体是否激活;
activeSelf表示自身是否禁用
tag是物体的标签,可以通过查找标签来寻找物体;
GameObject go= GameObject.CreatePrimitive(PrimitiveType.cube);
go.SetActive(false);//将该物体禁用,禁用的游戏物体不执行Update和渲染,但还是可以获取
如何用代码给物体添加组件
GameObject go= GameObject.CreatePrimitive(PrimitiveType.cube);
go.AddComponent<Rigidbody>();//添加一个刚体组件;
go.AddComponent<>()
创建游戏物体的三种方法
GameObject go=new gGmeObject("cube")
第二种根据prefab进行实例化,
GameObject.Instantiate()
根据另一个游戏物体
GameObject.Instantiate(Prefab)//可以根据Prefab或者另外的游戏物体;
GameObject.CreatPrimitive(PrimititiveType.plane);//
Time.deltaTime
控制一些运动,使得每秒运动相同的距离;
Time.realtimeSinceStartup;
从开始运行到退出所用的时间;
Awake OnEnable start
FixUpdate固定调用方法
Gizmos:指辅助线条;
Time类
Time.deltaTime
Time.fixeDeltaTime
Awake OnEnable start
FixUpdate固定调用方法
Gizmos:指
OnMouseUpAsButton
检测单击事件(单击下去不会检测,抬起来的时候检测。如果鼠标不在这个物体上就不会触发)
Random.insideUnitCircle: 围绕圆形随机产生一个2d坐标
Random.insideUnitSphere:围绕球体随机产生一个3d坐标
对向量的加减乘除
vector2和vector3可以相互之间的转换
就是z赋值为0或直接将z舍弃的问题
Lerp和Slerp:
前者是距离大小的差值,后者是角度大小的差值
MoveTowards:匀速运动
Lerp:先快后慢的运动
normalized和Normalize的区别:
前者只是向量的单位化,只是取得方向,有返回值,后者却是直接将向量单位化,没有返回值。
magnitude:取得向量的长度
normallzed:向量的单位化,即取得向量的方向(只保存方向,大小化为1 )
sqrMagnitude:取得向量的长度
Input
GetKey
GetKeyUP
GetKeyDown
Lerp(a,b,t)
t:插值
Mathf.Pingpong:感觉应用于往返运动