上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

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

guduadmin231月前

【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第1张


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

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

👨‍💻 本文由 秩沅 原创

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

🅰️推荐文章


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

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

⭐【unity本站最全系列】unity常用API大全一篇文章足以

【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第2张


常见的类_篇【一】


文章目录

    • 🅰️推荐文章
    • 常见的类_篇【一】
    • 🎶(==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类



                    【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第3张

                    • 🧠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命名空间下
                                                • 作用:对程序运行的数据进行操作控制

                                                  【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第4张

                                                • ❤️ Application.LoadLevel() ——老式场景资源加载的方法
                                                • ❤️ Application.Quit()——退出游戏(前提是游戏已经打包后运行)
                                                • ❤️ Application.Ispaly——是否是运行模式or编辑模式

                                                  🎶(Gcursor类


                                                  • 在UnityEngine命名空间下
                                                  • 鼠标的隐藏 ——Cursor.Visible();
                                                  • 鼠标的锁定,限制范围 CursorState = CursorLockMode.下面三个

                                                    【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第5张

                                                  • 设置鼠标图片——Cursor.setCursor(三个参数如下)

                                                    【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第6张【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第7张



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

                                                    }

                                                    【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第8张

                                                    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为平滑时间

                                                      【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第9张


                                                      🎶(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#专题篇】—核心章题单实践练习


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


                                                                    【Unity每日一记】常见的类你都掌握了吗,没有就过来看看吧,在这里插入图片描述,第2张


网友评论

搜索
最新文章
热门文章
热门标签
 
 周公解梦梦见自己死了是什么预兆  梦见狗跟着我赶都赶不走  梦见下大雨房子倒塌是什么意思