Unity脚本(C#)基础笔记

2023-02-22 10:47:34 浏览数 (1)

  • , 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,不然会混乱

0 人点赞