【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧

news2025/3/11 15:41:07

在这里插入图片描述


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏unity每日一记

🅰️推荐文章


⭐【Unityc#专题篇】之c#系统化大礼包】

⭐【unity数据持久化】数据管理类_PlayerPrfs

⭐【unity本站最全系列】unity常用API大全一篇文章足以
在这里插入图片描述


常见的类_篇【一】


文章目录

    • 🅰️推荐文章
    • 常见的类_篇【一】
    • 🎶(==A==) gameObject类
    • 🎶(==B==)MonoBehavior类
    • 🎶(==C==) Input系统接口类
    • 🎶(==D==)MathF类
    • 🎶(==E==)Time类
    • 🎶(==F==)Application类
    • 🎶(==G==)cursor类
    • 🎶(==H==)Vector类
    • 🎶(==J==)transform类
    • 🅰️系统路线学习点击跳转



🎶(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);

🎶(BMonoBehavior类



在这里插入图片描述

  • 🧠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(“当前玩家抬起鼠标中键(从按下状态松开滚轮)”);
    }



🎶(DMathF类



👨‍💻👍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     
    } 

🎶(ETime类


帧间隔时间

  • 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;


🎶(FApplication类


  • 在UnityEngine命名空间下
  • 作用:对程序运行的数据进行操作控制
    在这里插入图片描述
  • ❤️ Application.LoadLevel() ——老式场景资源加载的方法
  • ❤️ Application.Quit()——退出游戏(前提是游戏已经打包后运行)
  • ❤️ Application.Ispaly——是否是运行模式or编辑模式

🎶(Gcursor类


  • 在UnityEngine命名空间下
  • 鼠标的隐藏 ——Cursor.Visible();
  • 鼠标的锁定,限制范围 CursorState = CursorLockMode.下面三个
    在这里插入图片描述
  • 设置鼠标图片——Cursor.setCursor(三个参数如下)
    在这里插入图片描述在这里插入图片描述


🎶(HVector类


👨‍💻👍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为平滑时间

在这里插入图片描述


🎶(Jtransform类


👨‍💻👍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#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


在这里插入图片描述


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/706175.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

layui弹出层laydate时间选择一闪而过,无法弹出时间选择

问题&#xff1a;layUI日期框弹不出&#xff0c;一闪而过 laydate.render({elem: #ctime,type: datetime,trigger:click }); 解决方案&#xff1a;关键代码&#xff0c;添加如下代码 trigger:click 实现效果

浏览器基础原理-安全: HTTPS

HTTP协议的历史: HTTP协议的目的很单纯, 就是为了传输超文本文件, 所以早期的 HTTP 一直保持着明文传输数据的特征, 但是中间很有可能会被截取或者篡改, 即收到中间人攻击. 解析HTTP协议栈层面: HTTPS往里面加入了安全层, 它的指责是: 对发起HTTP请求的数据进行加密和对接收…

Redis实战篇(二)

三、优惠卷秒杀 3.1 全局唯一ID 每个店铺都可以发布优惠券&#xff1a; 当用户抢购时&#xff0c;就会生成订单并保存到tb_voucher_order这张表中&#xff0c;而订单表如果使用数据库自增ID就存在一些问题&#xff1a; id的规律性太明显 受单表数据量的限制 场景分析一&am…

初学mybatis(二)CRUD操作及配置解析

学习回顾&#xff1a;初学mybatis&#xff08;一&#xff09; 一、namespace 1、将上面案例中的UserMapper接口改名为 UserDao&#xff1b;2、将UserMapper.xml中的namespace改为为UserDao的路径 .3、再次测试 结论&#xff1a; 配置文件中namespace中的名称为对应Mapper接口或…

Python基本操作

前言 啦啦啦&#xff0c;现在开始,打算做一期Python基础教程&#xff0c;欢迎大家来看哦&#xff01; 导读 这期文章真的是Python基础中的基础&#xff0c;相信有一定编程基础的小伙伴们都一定能看懂的… 本文共分为以下几个部分&#xff1a; 数与运算符基本输入输出注释模…

Linux环境安装openJDK

现在越来越多的开发者使用 openJDK &#xff0c;当然这也是一种趋势 官网下载&#xff1a; https://jdk.java.net/java-se-ri/8-MR5这里以 jdk8 为例 配置环境变量 看网上的教程&#xff0c;好多人都推荐去这个官网下载&#xff1a; https://hg.openjdk.org/其实这个是 O…

算法笔记——数组篇

整理一下刷过的题型&#xff0c;持续更新&#xff0c;参照代码随想录 代码随想录数组篇 二分法 力扣相关题目&#xff1a; 704. 二分查找 只适用于排序有序数组&#xff0c;且没有重复元素。主要是有两种写法&#xff0c;二分查找涉及的很多的边界条件&#xff0c;逻辑比较简单…

V-Box智能车载终端-OBUYZN2

1 产品概览 OBUYZN2型智能车载终端&#xff08;以下简称&#xff09;是 型智能车载终端&#xff08;以下简称&#xff09;是 型智能车载终端&#xff08;以下简称&#xff09;是 型智能车载终端&#xff08;以下简称&#xff09;是 组成智能网联 系统 的核心数据交互设备 &…

Java 顶层类(top-level class)的访问控制修饰符

在Java中&#xff0c;处于最外层的类就是顶层类&#xff08;top-level class&#xff09;&#xff0c;类的声明外面再没有其它的类包裹。 顶层类的访问控制修饰符只能是public、或者包访问控制修饰符&#xff08;也就是无访问控制修饰符&#xff09;。 访问控制修饰符访问范围…

用codetyphon开发一个单机版跨平台数据处理小软件

目录 1 前言 2 一种可能的方案 2.1 数据存储使用dbf格式 2.2 用Lazarus或CT开发 2.3 根据外部csv或者excel电子表格快速建表 2.4 用python汇总和审核 3 当前进度 3.1 根据excel电子表格快速自动建表和导入数据 3.2 显示数据 3.3 建立测试数据库 1 前言 现在各种现成的…

Vue天气案例

绑定事件的时候&#xff1a;xxx"yyy" yyy可以写一些简单的语句。 <body><div id"root"><h2>今天天气很{{info}}</h2><button click"changeWether">切换天气</button></div> </body><scr…

HBase-问题

最终理解HBase数据模型的关键在于稀疏、分布式、多维、排序的映射。其中映射map指代非关系型数据库的key-Value结构。 1.怎么理解稀疏&#xff1f; 不同的行有不同的列&#xff0c;这就叫稀疏 有的行有3个列&#xff0c;有的行有2个列&#xff0c;那么2个列的在显示的时候&a…

Unity之穿山甲SDK

SDK版本相关问题官网解答记录: 官网咨询工单地址记录&#xff1a; https://www.csjplatform.com/athena/user-feedback/order/list?identify_keycb790ca553ed7253d29a4dbd4041281b62c449f55d6faaeb4e744370c9b34e38&init_id652798&order_id652798

解决AntvX6的阴影残留

问题描述&#xff1a;在使用antVX6的过程中&#xff0c;有时候重选渲染会出现阴影残留。 解决&#xff1a; 每次重新渲染画布时&#xff0c;使用 clearCells API清除一下画布即可解决。 ... const graph new Graph({container: document.getElementById("app"),w…

高性能分布式缓存Redis(二) 高级应用

一、持久化原理 持久化 Redis是内存数据库&#xff0c;数据都是存储在内存中&#xff0c;为了避免进程退出导致数据的永久丢失&#xff0c;需要定期将Redis中的数据以某种形式(数据或命令)从内存保存到硬盘&#xff1b;当下次Redis重启时&#xff0c;利用持久化文件实现数据恢…

UE4/5数字人Metahuman与Style3D的使用【一、Style3DAtelier软件制作smd格式衣服并导入ue】

目录 软件和插件下载 安装软件Style3DAtelier 放入插件 布料模拟制作&#xff1a; 导出人物 &#xff1a; 数字人与小白人 Style3D添加衣服&#xff1a; 导入小白人或数字人&#xff1a; 身高修改&#xff1a; uv调整 模拟查看情况&#xff1a; 导出smd格式&#x…

0. 开篇词 —— 风物长宜放眼量

个人简介 我是一名工作了6年的 Java 工程师&#xff0c;日常主要工作就是业务功能开发&#xff0c;但是业余时间喜欢研究一些开源框架和流行的技术。我本人是经典 ORM 框架 MyBatis 的 Contributor&#xff0c;同时也是微服务框架 Nacos 的核心 Contributor 和 gorm 的Contrib…

GPT3学习笔记

GPT-3概述 关于GPT-3的主要事实: 模型分类:GPT-3有8个不同的模型&#xff0c;参数从1.25亿到1750亿不等。 模型大小:最大的GPT-3模型有1750亿参数。这比最大的BERT模型大470倍(3.75亿个参数) 体系结构:GPT-3是一种自回归模型&#xff0c;使用仅有解码器的体系结构。使用下一…

mac ppt设置起始页码

今天发现我的ppt的左边ppt的缩略图的开始页码是从2开始的&#xff0c;觉得很奇怪&#xff0c;这个解决的办法就是 点击ppt->文件->页面设置->页眉和页脚->幻灯片编号

chatgpt赋能python:用Python自动化办公:优化SEO的关键

用Python自动化办公&#xff1a;优化SEO的关键 随着互联网的快速发展和人们对搜索引擎的依赖加深&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;这个概念也逐渐受到人们的关注。SEO可以帮助网站排名更高&#xff0c;吸引更多的访客并提高转化率&#xff0c;成为了许多企…