将挂载了脚本的空物体制作成Prefab,用来动态生成且生成一次
//Loader.cs 加载管理Prefab public GameObject ManagerObject; void Awake(){ if(GameManager.Instance == null){ GameObject go = Instantiate(ManagerObject); DontDestroyOnLoad(go); } }
平常的脚本组件都可以通过来下面禁用组件
component.enable = false;
而刚体使用的方法为:
rigidbody.Sleep();//沉睡 rigidbody.WakeUp();//醒来
GameObject go = GameObject.FindGameObjectWithTag ("Player"); GameObject[] go = GameObject.FindGameObjectsWithTag ("Player");
两个方法都是GameObject的静态方法,一个查找单个物体,一个查找多个物体
发生碰撞等,获取到碰撞的物体后
可以通过Transform和Collider组件等调用SendMessage("方法名")
来调用碰撞目标被碰撞后的回调函数。
RaycastHit2D hit = Physics2D.Linecast(Pos, targetPos);//Pos是主角的位置 Transform transform = hit.transform;//获取到碰撞到目标的Transform组件 Collider2D collider = hit.collider;//获取碰撞目标的2D碰撞体
Transform组件和Collider2D组件都可以访问tag属性,从而判断碰撞到的物体是什么
Rigidbody2D r = gameObject.GetComponent<Rigidbody2D>(); r.MovePosition(Vector2.Lerp(this.transform.position, Pos, speed * Time.deltaTime));
2D刚体的移动,一般刚体的运算都是放在FixedUpdate中的。
Has Exit Time 当前动画是否有退出时间
Exit Time 退出的时间点 0-1,1表示播放完
Transition Durations 两个动画的过度时间(协调用)
Conditions 使用到的变量用来控制过度是否触发
要使用Transform组件来设置父物体,子物体就会跑到父物体下
transform.SetParent(who.transform); transform.SetParent(who.transform,false);
忽略第二个参数是,子物体会保持世界坐标的位置,自动计算本地坐标
指定第二个参数为false时,不会保持在原来世界坐标的位置。
首先选择连续的动画图片,直接拖拽到Scene或Hierarchy中,Unity会生成一个AnimatorController和一个Animation,形成的物体对象有一个组件Animator引用的就是这个生成的AnimatorController,这个AnimatorController里面包含默认动画为生成的Animation。如果该物体对象有多个动画的话,再选择多个这个动画的图片,拖拽到刚刚第一次拖拽的物体上,此时就只会生成一个Animation,直接显示在上次创建的AnimatorController中,使用同一个AnimatorController。
Mesh Filter组件存储一个Mesh,描述模型的网格(形状),拥有三角面的顶点信息。
Mesh Renderer组件通过Mesh获取信息,通过Material渲染模型的样子,并赋给颜色。