👨💻个人主页:@元宇宙-秩沅
👨💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!
👨💻 本文由 秩沅 原创
👨💻 收录于专栏:unity每日一记
⭐🅰️推荐文章⭐
⭐【Unityc#专题篇】之c#系统化大礼包】
⭐【unity数据持久化】数据管理类_PlayerPrfs
⭐【unity本站最全系列】unity常用API大全一篇文章足以
⭐常见的类_篇【一】⭐
🎶(A) gameObject类
成员变量
-
名字: this.gameObject.name
-
是否激活:
this.gameObject.activeSelf -
是否是静态
this.gameObject.isStatic -
层级
this.gameObject.layer -
标签
this.gameObject.tag
创建几何体
GameObject.CreatePrimitive(PrimitiveType.Cube);——正方体
查找——消耗性能
- 通过名字:GameObject.Find(“名字”);
- 通过标签:GameObject.FindGameObjectWithTag(“标签名”);
实例化
GameObject.Instantiate(xx);
销毁
-
GameObject.Destroy(xx)
Destroy方法 本质上给这个对象加了一个移除标 一般情况下 它会在下一帧时把这个对象移除并从内存中移除 如果没有特殊需求 就是一定要马上移除一个对象的话 建议使用上面的 Destroy方法 因为 是异步的 降低卡顿的几率
场景不移除对象
-
GameObject.DontDestroyOnLoad( xx );
切换场景后物体会被删除,该API对象 过场景不被删除
添加脚本
- xx.AddComponent<脚本名>();
标签比较
- this.gameObject.CompareTag(“xx”)
- this.gameObject.tag == “xx”
激活失活设置
- obj.SetActive(false);
🎶(B)MonoBehavior类
- 🧠transform.enable()+transform.Active
- 🧠xx.GetComponent<>()泛型获取
- 🧠XX.GetComponent() as XX
- 🧠XX.GetComponent(Typeof()) as XX Typey类型获取
- 🧠gameObject.name
- 🧠 new 脚本类型 [ ] yy / yy = this.GetComponents();//得到多个脚本
- 🧠 getComponentInChrild/Parent //子对象或父对象组件的获取
- 🧠更安全的获取脚本TryGetComponent<>();
👨💻👍1,鼠标回调事件函数
- 适用于界面操作
private void OnMouseDown()
{
print(“在挂载的物体身上按下了鼠标”);
}
private void OnMouseUp()
{
print(“在挂载的物体身上按下的鼠标抬起了”);
}
private void OnMouseDrag()
{
print(“在挂载的物体身上用鼠标进行了拖拽操作”);
}
private void OnMouseEnter()
{
print(“鼠标移入了挂载的物体”);
}
private void OnMouseExit()
{
print(“鼠标移出了挂载的物体”);
}
private void OnMouseOver()
{
print(“鼠标悬停在了挂载的物体上方”);
}
private void OnMouseUpAsButton()
{
print(“鼠标在挂载的物体身上松开了”);
}
🎶(C) Input系统接口类
👨💻👍0,相关
- 输入相关的内容一定是哟啊写在Update里面
- 长按和点按的区别在于有没有Dwon和Up
- 按任意键继续 – Input.AllKey()
- 得到输入的是哪个键(Stirng)-Inpout.inputString()
- 得到鼠标的位置——Input.MousePosition()
+GetAxis 和 GetAxisRaw 的区别 ——后者返回的只有三个值 -1 0 1
👨💻👍1,连续检测(按键,鼠标)
- print(“当前玩家输入的水平方向的轴值是:”+Input.GetAxis(“Horizontal”));
- print(“当前玩家输入的垂直方向的轴值是:” + Input.GetAxis(“Vertical”));
- print(“当前玩家输入的水平方向的边界轴值是:” + Input.GetAxisRaw(“Horizontal”));
- print(“当前玩家输入的垂直方向的边界轴值是:” + Input.GetAxisRaw(“Vertical”));
- print(“当前玩家鼠标水平移动增量是:”+Input.GetAxis(“Mouse X”));
- print(“当前玩家鼠标垂直移动增量是:” +Input.GetAxis(“Mouse Y”));
- 鼠标的某一个键按下 ——Input.GetMouseButtonDown( 0/1/2)
- 得到鼠标的位置——Input.GetMousePosition()——起点在屏幕左下角
- 鼠标的滚动——Input.MouseScrollDeltta()——改变Y轴的值
- 鼠标滚动的应用-------炮管的升降
👨💻👍2.连续检测(事件)
手柄相关
-
得到所有按钮的名字 ——Input.GetJoystickNameS()
-
if (Input.GetButton(“Fire1”))
{
print(“当前玩家正在使用武器1进行攻击!”);
} -
if (Input.GetButton(“Fire2”))
{
print(“当前玩家正在使用武器2进行攻击!”);
} -
if (Input.GetButton(“RecoverSkill”))
{
print(“当前玩家使用了恢复技能回血!”);
}
👨💻👍3.间隔检测(事件)
-
if (Input.GetButtonDown(“Jump”))
{
print(“当前玩家按下跳跃键”);
} -
if (Input.GetButtonUp(“Squat”))
{
print(“当前玩家松开蹲下建”);
} -
if (Input.GetKeyDown(KeyCode.Q))
{
print(“当前玩家按下Q键”);
} -
if (Input.anyKeyDown)
{
print(“当前玩家按下了任意一个按键,游戏开始”);
} -
if (Input.GetMouseButton(0))
{
print(“当前玩家按住鼠标左键”);
} -
if (Input.GetMouseButtonDown(1))
{
print(“当前玩家按下鼠标右键”);
} -
if (Input.GetMouseButtonUp(2))
{
print(“当前玩家抬起鼠标中键(从按下状态松开滚轮)”);
}
🎶(D)MathF类
👨💻👍1,MathF类的静态变量
✅Math和MathF的区别:mathf是unity封装的类它在基于math数学类的基础上添加了适合unity游相关的方法
✅强制类型转换和向下取整&向下取整:除去c#中常用的三个强转 —ceilToInt() 和 FloorInt()
✅钳制函数MathF.clamp()
✅Mathf.sigh()-判断正负
✅Mathf.MoveTowords()——无限接近但不完全相等
👨💻👍1,MathF类的静态变量
- print(Mathf.Deg2Rad+“,度到弧度换算常量”);
- print(Mathf.Rad2Deg+ “,弧度到度换算常量”);
- print(Mathf.Infinity+“正无穷大的表示形式”);
- print(Mathf.NegativeInfinity + “负无穷大的表示形式”);
- print(Mathf.PI);
👨💻👍2,MathF类的静态函数
-
print(Mathf.Abs(-1.2f)+ “,-1.2的绝对值”);
-
print(Mathf.Acos(1)+“,1(以弧度为单位)的反余弦”);
-
print(Mathf.Floor(2.74f)+“,小于或等于2.74的最大整数”);
-
print(Mathf.FloorToInt(2.74f)+“,小于或等于2.74的最大整数”);
-
print(Mathf.Lerp(1,2,0.5f)+“,a和b按参数t进行线性插值”);
-
print(Mathf.LerpUnclamped(1, 2, -0.5f) + “,a和b按参数t进行线性插值”);
👨💻👍3,MathF类中的 倒计时 函数
Math.MoveTowards()
void Update()
{
print("游戏倒计时:" + endTime);
endTime = Mathf.MoveTowards(endTime,0,0.1f); //每次减0.01 直到endTime为0
}
🎶(E)Time类
帧间隔时间
-
Time.deltaTime ",
完成上一帧所用的时间(以秒为单位 -
Time.unscaledDeltaTime
不受scale影响的帧间隔时间
物理帧间隔时间
-
Time.fixedDeltaTime
执行物理或者其他固定帧率更新的时间间隔",fixedDeltatime是一个固定的时间增量。Unity中默认fixeddeltaTime为0.02秒,但FixedUpdate并不是真的就0.02秒调用一次
以下的总时间并不精确,适用于对时间精确不是特别严格的情况
-
Time.fixedTime + ",表示FixedUpdate(生命周期)已经执行的时间,可以作为自游戏启动以来的总时间(以物理或者其他固定帧率更新的时间间隔累计计算的),基本上是以0.02慢慢累加(有误差)
-
Time.time + ",游戏开始以来的总时间、
精确时间
-
Time.time + “,游戏开始以来的总时间”
-
Time.realtimeSinceStartup + “,游戏开始以来的实际时间”
-
Time.smoothDeltaTime + ",经过平滑处理的Time.deltaTime的时间
-
Time.timeSinceLevelLoad + ",自加载上一个关卡以来的时间(进入了新场景后的时间)
时间缩放比例
- 时间停止
Time.timeScale = 0; - 恢复正常
Time.timeScale = 1; - 2倍速
Time.timeScale = 2;
一共跑了多少帧(多少次循坏)
Time.frameCount
👨💻👍慢动作功能 —时间成员变量
- ime.timeScale
时间流逝的标度,可以用来慢放动作、它的默认值为1,为0.5时可将当前游戏程序中所有时间放慢到原来的0.5倍,若为3 则为原来的三倍
Time.timeScale = 3;
🎶(F)Application类
- 在UnityEngine命名空间下
- 作用:对程序运行的数据进行操作控制
- ❤️ Application.LoadLevel() ——老式场景资源加载的方法
- ❤️ Application.Quit()——退出游戏(前提是游戏已经打包后运行)
- ❤️ Application.Ispaly——是否是运行模式or编辑模式
🎶(G)cursor类
- 在UnityEngine命名空间下
- 鼠标的隐藏 ——Cursor.Visible();
-
鼠标的锁定,限制范围 CursorState = CursorLockMode.下面三个
-
设置鼠标图片——Cursor.setCursor(三个参数如下)
🎶(H)Vector类
👨💻👍1.Vector2结构体的静态变量
1.Vector2.up // 以下的形式pint之后是 (X,y)
2.Vector2.down
3.Vector2.Left
4.Vector2,Riht
5.Vector2.one //单位化之后的值
6.Vetor2.zero // 原点的值
👨💻👍2.Vector2 结构体的成员变量
1.x
2.y
3.XX.normalized //返回 单位化的值
4XX.magnitude //返回该向量的模长
5.XX.sqrMagnitude //返回该向量 模长的平方
‘’‘’‘’‘’‘’‘’
👨💻👍3.索引器的格式和存在的目的
1,格式
访问修饰符 + 数据类型+ this [ 索引类型 index]
{
get
set
}
2.目的:
简化结构体或者类成员的引用 (简化代码),可向数组用下标那样调用成员
👨💻👍4.Vector2的公共函数-Equrls()
Equrls(); // 比较两个向量是否相等
用法 : XX1 . Equals( XX2 );
👨💻👍5,Vector2的静态方法
-
1.vector2.Angle(); 返回两个向量的夹角
-
2.vevtor2.Distance(): 返回两个点(向量)的距离
-
3.Vetor2.Lerp(a , b, t) ;返回两个向量的差值 (二维向量线性差值)
-
4.Vecor.LerpUnclamped(a,b,t) ; 在 a 与 b 之间按 t 进行线性插值,t 没有限制。
-
5.Vector2.MoveTowards(a , b,t): t为限制向量的移动步频(可以理解为规定速度移动)、
-
6.vector2.max();
-
7.vector2.min();
-
8.vecotr2.smoothDamp(a,b,v ,t);平滑阻尼,可理解为汽车刹车效果,v为速度是二维向量,t为平滑时间
🎶(J)transform类
👨💻👍1.transform的位置信息
transform.position ----游戏物体trans组件的世界位置信息
transform.Rotation----游戏物体的四元旋转信息
transform.enlerAugle- —游戏物体的欧拉角的信息(也就是Inspactor面板中的Rotation信息)
transform.localposition/localRotion/localenleAugle--------表自身的自身信息
- 当前游戏物体的世界四元旋转值为——transform.rotation
- 当前游戏物体的自身大小为——transform.localScale
- 当前游戏物体的自身位置为——transform.localPosition
- 当前游戏物体的自身四元旋转位置——transform.localRotation
- 当前游戏物体的世界欧拉角为——transform.eulerAngles
- 当前游戏物体的自身欧拉角为——transform.localEulerAngles
👨💻👍2.游戏物体的自身方向和世界轴方向
针对自身:
==transform.forword ==----向前Z轴方向
transform.up------向上y轴方向
transform.right----向右x轴方向
针对世界:
vector.XX…
针对看向:
transform.LookAt(某个方向)——一直看向某个方向
transform.LookAt(某个物体)——一直看向某个物体
针对缩放
#region 知识点一 缩放
//相对世界坐标系
print(this.transform.lossyScale);
//相对本地坐标系(父对象)
print(this.transform.localScale);
距离运动相关
- 当前的位置 + 我要动多长距离 == 得出最终所在的位置
this.transform.position = this.transform.position + this.transform.up * 1 * Time.deltaTime;
- 始终会朝向相对于自己的面朝向去动
this.transform.position += this.transform.forward * 1 * Time.deltaTime;
- 相对于世界坐标系的 Z轴 动 始终是朝 世界坐标系 的 Z轴正方向移动
this.transform.Translate(Vector3.forward * 1 * Time.deltaTime, Space.World);
- 相对于世界坐标的 自己的面朝向去动 始终朝自己的面朝向移动
this.transform.Translate(this.transform.forward * 1 * Time.deltaTime, Space.World);
- 相对于自己的坐标系 下的 Z轴正方向移动 始终朝自己的面朝向移动
this.transform.Translate(Vector3.forward * 1 * Time.deltaTime, Space.Self);
👨💻👍 3.用transform组件来进行查找(包含索引查找)
-
被创造的游戏物体的世界坐标位置是——xx.transform.position
-
当前transform组件挂载的游戏物体对象的名字是——transform.name
-
当前transform组件挂载的游戏对象的子对象的数量——transform.childCount
-
查找当前游戏物体的子对象的trans组件名称为——transform.Find(“zz”)
-
查找当前游戏物体的第一个子对象——transform.GetChild(0));
-
查找该游戏物体在父类中子对象的索引位置"——transform.GetSiblingIndex()
⭐🅰️系统路线学习点击跳转⭐
⭐【Unityc#专题篇】之c#进阶篇】
⭐【Unityc#专题篇】之c#核心篇】
⭐【Unityc#专题篇】之c#基础篇】
⭐【Unity-c#专题篇】之c#入门篇】
⭐【Unityc#专题篇】—进阶章题单实践练习
⭐【Unityc#专题篇】—基础章题单实践练习
⭐【Unityc#专题篇】—核心章题单实践练习
你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!、文章来源:https://www.toymoban.com/news/detail-516427.html
文章来源地址https://www.toymoban.com/news/detail-516427.html
到了这里,关于【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!