LineRenderer(划线组件)

Material:划线的材质;
Positions:多个点,划线的点集;
Use World Space:是否使用世界坐标系;
Loop:是否循环,是指第一个点和最后一个点是否形成闭环;
Width:划线的宽度,通过曲线来控制;

一条射线碰撞到多个碰撞体

1
2
3
4
5
6
7
Ray ray1 = new Ray(Vector3.zero, Vector3.forward);
//同理一条射线能触碰多个碰撞体,并返回碰撞信息数组﹔如果没有磁撞到碰撞体,数组长度为0
RaycastHit[] hitinfos = Physics.RaycastAll(ray1,1000,(1 <<LayerMask.NameToLayer("UI")) + (1 << LayerMask.NameToLayer("Cube")));
for (int i = 0; i < hitinfos.Length; i++)
{
Debug.Log(hitinfos[i].transform.name);
}

延迟相关函数

延迟函数

  • 延迟函数Destroy(object, float time);
  • time时间之后销毁object类型;
    1

延迟执行函数

  • 延迟执行函数Invoke()
  • 通过方法名延迟调用对应函数;
  • 注意:
    1. 当此脚本或者当前脚本所在的游戏物体失活,延迟函数依然会执行;
    2. 但是当前脚本或者游戏物体被销毁,延迟函数就不会执行;
1
2
3
4
5
void TestInvoke()
{
transform.gameObject.SetActive(true);
Debug.Log("TestInvoke");
}

取消延迟函数

  • 取消延迟函数CanceInvoke();
  • 如果不传参数,那么就会取消当前代码内的所有延迟函数;
  • 如果传参数,就是取消对应函数延迟调用;
1
2
3
4
if (Input.GetKeyDown(KeyCode.D))
{
CancelInvoke("TestInvoke");
}

延迟重复调用

  • 延迟重复调用 InvokeRepeating(string methodName, float time, float repeatRate);
  • Time时间之后调用methodName方法,每隔repeatRate秒之后在调用一次methodName函数;
1
InvokeRepeating("TestInvoke", 2 , 1 );

异步加载:

不会引起代码阻塞;

协程

协程:协程不是多线程,是假的“多线程”;

应用场景:1.WWW加载网络数据;2.异步加载资源、场景;

Unity的特殊文件夹

- Word M2W3 -