unity 常用核心类

在这里插入图片描述
1、Transform变换
a、位置移动

//表示在世界坐标上向x正方向(右)位移10米(x,y,z)
transform.position = new Vector3(10, 0, 0);
//表示在本地坐标向右位移10米
transform.localPosition = new Vector3(10, 0, 0);
//Space.World:世界坐标系 Space.Self:自身坐标系
//在Update中使用Translate可以一直移动
transform.Translate(new Vector3(10,0,0),Space.World);
transform.Translate(new Vector3(10,0,0),Space.Self);
transform.Translate(new Vector3(10,0,0));//默认是世界坐标
//若使用position一直移动
transform.position += new Vector3(10, 0, 0);

世界坐标:以场景的原点为原点
本地坐标:以父物体的位置为原点
transform:是一个类,用来描述物体的位置,大小,旋转等等信息。
Translate:是transform类的对象,依附于每一个物体;transform类的一个方法,用来改变物体的位置
b、旋转角度

//四元数:Quaternion  欧拉角:Euler
//表示在世界坐标绕y轴旋转45°
transform.rotation = Quaternion.Euler(0, 45, 0);
//表示在本地坐标绕y轴旋转45°
transform.localRotation = Quaternion.Euler(0, 45, 0);
//表示一个游戏对象绕另一个游戏对象旋转(位置,方向,速度)
transform.RotateAround(sphere.position,Vector3.up,1);

transform.Rotate(new Vector3(0,45,0),Space.World);
transform.Rotate(new Vector3(0,45,0));//默认Space.World
transform.Rotate(new Vector(0,45,0),Space.Self);

transform.rotation和transform.Rotate的区别:
Rotate()方法是:旋转多少度。在原有的基础上累加,即旋转了多少角度
rotation属性是:旋转到某个角度,就是是在update中每帧都执行。但每次旋转到的角度都是45,所以是旋转到45度。
比如你只想让他旋转到多少, 用rotation;
假如让他一直转,可以用Rotaterotation直接改变了数值, 以达到旋转效果。
c、自身缩放

//以x轴方向放大2倍
transform.localScale = new Vector3(2,1,1);

说到这里,不妨思考一个题目:一个立方体怎么较好地以自身某个点位移、旋转、缩放?
(本人想法见文底)

2、Vector3 (向量)
向量:既有大小又有方向的量
a、back: 向后
Vector3.back;
new Vector3(0,0,-1)
b、down: 向下
Vector3.down;
new Vector3(0,-1,0);
c、forward:向前
new Vector3(0,0,1);
d、left:向左
new Vector3(-1,0,0);
e、right:向右
new Vector3(1,0,0);
f、one:X,Y,Z各加1
new Vector3(1,1,1);
g、up:向上
new Vector3(0,1,0);
h、zero:(0,0,0)
new Vector3(0,0,0);

3、GameObject
GameObject和gameObject的区别
GameObject是游戏对象类的基类(所有游戏对象)
gameObject是脚本挂载的对象(脚本组件所在的游戏对象)

//1、创建空对象(分别取名father和son)
GameObject father = new GameObject("father");
GameObjec son = new GameObject("son");
//2、把son放在father下面
//方法一:
son.transform.parent = father.transform;
//方法二:
son.transform.setParent(father.transform);
//3、查找子对象
GameObject qiu = transform.GetChild(0).gameObject;
//4、查找父对象
GameObject cube = transform.parent.gameObject;

4、停止
Time.time:表示从游戏开始到现在的时间,会随着游戏暂停而停止计算
Time.deltaTime:表示从上一帧到当前的时间,以秒为单位
Time.timeScale:时间缩放,默认为1,若设置<1,表示时间减慢,若设置>1,表示时间加快,可以用来加速和减速游戏,=0则停止

5、克隆游戏对象
分步写:
a、在预设体的位置克隆游戏对象
GameObject go1 = Instantiate(cube);
b、固定位置克隆游戏对象(不做操作,位置为预设体位置)
3、设置游戏对象不旋转
Quaternion.identity 同 Quaternion(0,0,0,0)
一次性:
GameObject go2 = Instantiate(cube,new Vector3(0,0,5),Quaternion.identity);

6、摧毁游戏对象
a、直接摧毁游戏对象go1
Destory(go1);
b、停3秒后销毁对象go2
Destory(go2,3);

7、查找游戏对象
a、通过游戏对象名称(Player)查找游戏对象
GameObject cube1 = GameObject.Find(“Player”);
缺点1:出现重名,可能找不到你想要的那个
缺点2:如果对象多,太消耗性能
b、通过标签名称来查找游戏对象
GameObje cube2 = GameObject.FindWithTag(“Player”);
缺点1:出现重名,可能找不到你想要的那个
缺点2:不太消耗性能
c、查找相同标签的多个游戏对象
GameObject[] objs = GameObject.FindGameObjectsWithTag(“Player”);

8、获取、添加组件

//1)、获取脚本组件Move(本脚本和Move脚本在同一个游戏对象上)
Move m = transform.GetComponent<Move>();
//2)、本脚本不和Move脚本在同一个游戏对象
//a.找到游戏对象(假设脚本在Main Camera上)
GameObject camera = GameObject.Find(“Main Camera”);
//GameObject camera = GameObject.FindWithTag(“Main Camera”);
//b.查找游戏对象上面的脚本
Move m = camera.transform.GetComponent<Move>();
//3)、添加组件(Rigidbody)
a、Rigidbody r = gameObject.AddComponent<Rigidbody>();//添加刚体
b、r.AddForce(Vector3.forward*1000);//给向前的力

9、Random
//返回0.0(包括)到1.0(包括)之间的数
float a = Random.value;
//包括最小但不包括最大
int b = Random.Range(0,100);
//包括最大和最小
float c = Random.Range(0.0f,5.5f);

10、Input事件
a、鼠标事件
GetMouseButton(0):按下鼠标左键不动,程序一直运行,松开则停止
GetMouseButton(1):按下鼠标右键不动,程序一直运行,松开则停止
GetMouseButton(2):按下鼠标中键不动,程序一直运行,松开则停止
GetMouseButtonDown(0):按下鼠标左键时,程序运行一次
GetMouseButtonDown(1):按下鼠标右键时,程序运行一次
GetMouseButtonUp(2):按下鼠标中键时,程序不运行,松开中键时,程序运行一次。
0=“Fire1” 1=“Fire2” 2=“Fire3”
GetButtonDown(“Fire1”);
拓展:
void OnMouseEnter(){}表示鼠标移动该位置时就进行方法
void OnMouseExit(){}表示鼠标移开该位置就变回原样
b、键盘事件
Input.GetKeyDown(KeyCode.A) //W、S、D
Input.GetKeyDown(KeyCode.LeftArrow) //RightArrow UpArrow DownArrow
Input.GetDown(KeyCode.Space)
自定义水平和垂直建
float h = Input.GetAxis(“Horizontal”);
float v = Input.GetAxis(“Vertical”);
transform.Translate(new Vector3(h,0,v)Time.deltaTimespeed);
c、自定义按钮
GetButton 根据按钮名称返回true当对应的虚拟按钮被按住时。
GetButtonDown 在给定名称的虚拟按钮被按下的那一帧返回true。
GetButtonUp 在用户释放指定名称的虚拟按钮时返回true。

11、协程
在这里插入图片描述

 //使用协程(不要单独放在Update中,如果要放就添加条件)
 void Start(){
    
    StartCoroutine(“Print”)}//或者Print()//方法名
 IEnumerator Print()
{
    
    
   yield return new WaitForSeconds(3f);
   print(1);
}
//停止协程
//打印5个数字,每隔1秒打印一个数字,当打印到3的时候停止打印
Coroutine c;
Void Start(){
    
    c=StartCoroutine(Clone())}
IEnumerator Clone()
{
    
    
 for(int i=1;i<=5;i++)
 {
    
    
  print(i);
  if(i==3)
  {
    
    StopCoroutine(c)}
 }
  Yield return new WaitForSeconds(1);
}

12、委托和事件
由于还未学习,就不写了。

小问题:立方体以自身某个点位移、旋转、缩放
答:为立方体创建一个父物体(空对象),这样父物体旋转,立方体也跟着以父物体旋转。

猜你喜欢

转载自blog.csdn.net/weixin_44706943/article/details/126473499
今日推荐