- , 19 8月 2021
- 作者 847954981@qq.com
- 后端学习
Unity脚本(C#)基础笔记
Unity的C#脚本都继承MonoBehaviour
父子节点是由transform组件表示的,所以关于父子节点的操作都是transform的操作
事件回调:
Start() 开始时回调一次(执行一次)
Update() 每帧调用、更新游戏显示
Awake()组件实例化时执行(当组件被禁用也执行)
OnEnable()组件启动时(当开始后,禁用组件再使用会再次启用方法,Start()不会)
方法调用:
控制台打印:
代码语言:javascript复制Debug.Log(...);
显式设定帧率:
代码语言:javascript复制Application.targetFrameRate=50(number) //设定帧率,但实际帧率是变化的
移动:
代码语言:javascript复制this.transform.Translate(0,0,0);//分别向x,y,z轴移动
ps,如果写在update中,因为帧率不固定,实际移动效果的跳动的。
匀速优化:flout step=0.8f*Time.deltaTime;
获取组件(如Spirit Renderer):
代码语言:javascript复制SpriteRenderer renderer=this.GetComponent<SpriteRenderer>();
也可以写成:this.gameObject.getComponent<...>();(Unity内部作了封装)
总体上就是创建一个组件对应的对象,在调用获取组件的方法。
获取其他节点:
代码语言:javascript复制GameObject obj=GameObject.Find(路径);//路径如"/佩祺/乔治"
获取当前节点父节点:
代码语言:javascript复制GameObject parent = this.transform.parent.gameObject
遍历子节点(并打印名字):
代码语言:javascript复制foreach(Transform child in transform){
Debug.Log(child.name);
}
设置父节点:
代码语言:javascript复制child.transform.SetParent(parent.transform);
SetParent(null);//挂在场景根节点下
指定节点的坐标:
代码语言:javascript复制transform.position = new Vector3(0,1.0f,0)
指定节点的角度(欧拉角)
代码语言:javascript复制transform.eulerAngles = new Vector(0,0,90f)
运动的第四个参数:
代码语言:javascript复制Translate(0,1.0f,0,Space.Self)//运动时以自身坐标轴运动(默认)即当节点旋转移动角度,会向此角度的上方移动
Translate(0,1.0f,0,Space.World)//运动时以绝对坐标系运动
旋转角度:
代码语言:javascript复制position.Rotate(0,0,0)
获取物体的屏幕坐标:
代码语言:javascript复制Vector3 pos=transfom.position //先获取物体的世界坐标
Vector3 screenPos = Camera.main.WorldToScreenPoint(pos);//通过世界坐标获取屏幕坐标
根据预制体创建对象:
代码语言:javascript复制GameObject obj=Instantiate(myPrefab)
销毁对象:
代码语言:javascript复制GameObject.Destory(obj);
参数调用(兼语法):
Time.deltaTime
获取帧间隔
this.gameObject
当前节点(游戏对象)
遍历:foreach(Object obj in objects){}
Vector3
对象表示三维向量
transform.position
节点的坐标
transform.eulerAngles
节点的角度(欧拉角)
transform.roation
是用Vector4表示旋转
transform.localPosition
本地坐标(以父节点坐标系为参照)
vector.magnitude
向量长度(flout)
vector.normailzed
获取某向量的单位向量
flout.toString("F3")
返回三位小数
Vector3.right
获取向右的标准向量 (1,0,0)
Vector3.up
获取向上的标准向量(0,1,0)
Vector3.forward
获取向里的标准向量(0,0,1)
Vector3.Dot(a,b)
向量点积
Vector3.Cross(a,b)
向量差积
Vector3.SignedAngle(a,b,Vector.forward)
获取a,b向量夹角(a到b z轴方向的旋转)存在正负号
Vector3.Angle(a,b)
向量夹角不带正负号
transform.right
物体本身坐标系x轴指向
transform.up
物体本身坐标系y轴指向
transform.forward
物体本身坐标系z轴指向
Screen.width
屏幕宽度
Screen.height
屏幕高度
鼠标事件
鼠标左键按下状态(bool):
代码语言:javascript复制Input.GetMouseButton(0)
鼠标左键点击(检测按下 bool):
代码语言:javascript复制Input.GetMouseButtonDown(0)
鼠标左键点击(检测松开 bool):
代码语言:javascript复制Input.GetMouseButtonUp(0)
鼠标位置:
代码语言:javascript复制Input.mousePosition //在2d中获取鼠标坐标时要把z轴调为0,不然会混乱