概述
组件
Transform
特点:只要是游戏对象,必须有这个组件,有且只有一个
功能:游戏对象的变换 包含父子关系内容
坐标: 1.世界坐标 以场景原点为原点
2.相对坐标 相对于父物体
旋转:世界旋转 本地旋转
在面板上:1.显示相对于父物体的变换
2.子物体世界坐标 = 子物体本地坐标 + 夫物体世界坐标
3.子物体世界旋转 = 子物体本地旋转 + 夫物体世界旋转
4.子物体世界缩放 = 子物体本地缩放 * 夫物体世界缩放
方法
【坐标】
transform.position 世界坐标
transform.localposition 本地坐标
【欧拉角】
transoform.eulerAngles 世界欧拉角
transform.localEulerAngles 本地欧拉角
【四元数】
transform.rotation 世界四元数
transform.localRotation 本地四元数
【缩放】
transform.localScale 本地坐标
【自转】
transform.Rotate(new Vector3(2,0,0));
【绕转】
transform.RotateAround(绕转点,绕某个轴,绕转的度数);
【让自己朝自己的方向移动】
前方:transform.forward
上方:transform.up
右方:transform.right
【看向某个目标】
transform.LookAt("游戏对象".transform);
【获取或设置父对象】-- 没有父对象 -->parent 为 NULL
transform.parent
transform.SetParent()
【获取根对象】 -- 没有根对象-->root为自己
transform.root
【获取当前对象的子对象个数】
transform.childCount
【获取当前对象的子对象】
Transform child0 = transform.GetChild(0);
【Find】 --- 可以找到非激活对象
transform.Find(" ");
transform.Find(" / ");
GameObject
静态方法
GameObject.Find(" ");
GameObject.FindWithTag(" ");
GameObject.FindGameObjectsWithTag(" ");
成员方法
gameObject.activeSelf:是否存活
gameObject.setActive(true/false); 设置游戏对象的激活状态
获取组件
gameObject.AddComponent<组件>();
gameObject.GetComponent<组件>();
Vector3
成员方法
Vector3 vector = new Vector3(1,1,1);
vector.x = 3;
【返回一个向量的标准化向量】
vector.normalized;
【使当前向量变成一个单位向量】
vector.Normalize();
【向量的模】
vector.magnitude
【模的平方】
vector.sqrMagnitude;
静态方法
Vector3.forward(0,0,1)
Vector3.up (0,1,0)
Vector3.right (1,0,0)
Vector3.zero (0,0,0)
Vector3.one (1,1,1)
【求两点的距离】
(float)Vector3.Distance(Vector3,Vector3);
【求两个向量的夹角】
(float)Vector3.Angle(Vector3,Vector3);
【叉乘】 -- 判断左右
(Vector3)Vector3.Cross(Vector3,Vector3);
【点乘】 -- 判断前后
(float)Vector3.Dot(Vector3,Vector3)
【插值】
(Vector3)Vector3.Lerp(Vector3,Vector3,float)
Quaternion
【一个物体的空旋转】
Quaternion.identity
【让物体转向Vector3】
transform.rotation = Quaternion.LookRotation(Vector3);
【插值】
Quternion.Lerp(Vector3,Vector3,float);
Time
【上一帧结束到当前帧开始】
Time.deltaTime
【设置FixedUpdate时间】
Time.fixedDeltaTime
【从游戏开始,到现在的时间】
Time.time
【时间缩放】-- 影响重力
Time.timeScale = 2;
Mathf
【绝对值】
Mathf.Abs(-1);
【插值】 -- 数字插值
Mathf.Lerp()
【限定值】
Mathf.Clamp(3.5f , 5 , 8.0f) (3.5f - 8.0f 之间)
Mathf.Clamp01(float) (0 - 1之间)
脚本
如果未出现解决方案,在Unity中Edit中Preference中External Tools中选择External Script Editor选择打开方式
Runtime 运行时执行
Editor 插件,未运行时执行
脚本组件--可放到物件身上
1.继承 MonoBehaviour
2.类的名字要相同
3.不能和系统类名相同
非组件脚本--普通类
1.不继承 MonoBehaviour
2.可以和脚本名不一致
生命周期--回调函数
void Awake() 游戏开始时执行一次 不论这个脚本可用不可用都执行
void OnEnable() 可用时执行
void Start() 游戏开始后调用一次
void FixedUpdate() 每隔一定的时间间隔执行一次,默认0.2s执行一次
void Update() 游戏开始后每帧调用一次
void LateUpdate() 延迟执行
void OnGUI() 用于渲染旧版UI,每帧大约执行两次
void OnDisable() 当脚本组件设为不可用时,调用一次
void OnDestory() 剔除脚本
打印
Debug.log(" "); Unity引擎--推荐
print MonoBehaviour类中才可用
划线
DrawLine(Vector3 start,Vector3 end);
DrawRay(Vector3 start,Vector3 end);
实现功能三部曲
1.找到要操作的游戏对象或它的组件
2.找到功能所对应的组件
3.设置组件中的属性,或调用组件提供的方法,从而实现功能
对象
new一个对象
GameObject obj = new GameObject("对象名");
找到当前游戏对象
this.gameObject;
找其他游戏对象
通过游戏名找对象
GameObject.Find("对象名");
缺点
1.出现重名可能找不到对象了
2.对象太多,太消耗性能
通过标签找对象
GameObject.FindWithTag("标签")
缺点
1.出现重名可能找不到对象了
优点
1.不太消耗性能
找一堆对象
GameObject [] objs = GameObject.FindGameObjectsWithTag("标签");
tips
按住V贴边
this.name
this.tag
this.enable
this.transform
this.gameObject
变量外部显示:
public float rotateSpeed = 0.0f; // 只在编译初始化界面一次
public GameObject obj;
实现拖尾效果
Trail Renderer
只要不是三个浮点型的都能用Vector3
【插值移动】
trasform.position = Vector3(trasform.position,Vector3,%);
最后
以上就是优雅大门为你收集整理的重零开始的Unity学习--脚本开发 day01的全部内容,希望文章能够帮你解决重零开始的Unity学习--脚本开发 day01所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复