• Unity开发过程中的一些小知识点


    1、如何查询挂载了指定脚本的游戏物体
    在这里插入图片描述
    可以直接在Hierarchy面板上,搜索想要找的脚本名

    2、如何将Unity生成的多个相同游戏物体获得序号

    可以使用Unity的API Transform.GetSiblingIndex() 实现。

    Transform.GetSiblingIndex()
    ==================================
    gameobject.id=Transform.GetSiblingIndex()
    
    • 1
    • 2
    • 3

    含义:获得同级索引

    将生成的游戏物体放在同一的父级对象下,通过该API即可获取这些游戏图在同级层视图上的位置(按Hierarchy窗口中顺序进行排序)。

    3、在Unity中如何获得系统时间并输出

    这里需要注意YYYYMMDD_HHMMSS的含义
    它表示一种日期和时间的格式

    YYYY:表示四位数的年份,比如2024年
    MM:表示两位数的月份,比如12月
    DD:表示两位数的日期,比如23日

    HH:表示小时,比如6小时
    MM:表示分钟,比如45分钟
    SS:表示秒钟,比如12秒

     string date = $"{ System.DateTime.Now:yyyy/MM/dd_HH/mm/ss}" ;
     string date2 = System.DateTime.Now.ToString("yyyy/MM/dd_HH/mm/ss");
    
    • 1
    • 2

    4、如何用C#做出年/月/日这样种有斜杆的日期显示

    1、可以使用C#中Substring()方法

    Substring(int i ,int j)
    i表示从第i位的索引号开始截取 
    j表示截取的数量
    注意:字符串的索引值是从0开始的
    
    • 1
    • 2
    • 3
    • 4

    作用:从字符串中截取指定开始位置和指定长度的字符串

     public void GetDateButton2()
        {
            string date = $"{ System.DateTime.Now:yyyyMMdd_HHmmss}";
    
            string datetext = date.Substring(0,8);//截取从索引值第0位开始的后八位字符
    
            string timetext = date.Substring(9,6);//截取从索引值第9位开始的后六位字符
    
            SetDate(ref datetext);
    
            SetTime(ref timetext);
    
            DateText.text = datetext + "_" + timetext;
        }
        public void SetDate(ref string date)
        {
            date = date.Insert(4, "/");
            date = date.Insert(7, "/");
        }
        public void SetTime(ref string time)
        {
            time = time.Insert(2,":") ;
            time = time.Insert(5,":");
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    使用SubString()方法还可以用于截取字符串做判断,可以做一些像是敏感词这样的功能

    2、直接通过YYYYMMDD_HHMMSS进行格式化

    yyyy/MM/dd_HH/mm/ss
    
    • 1

    4、在Unity中的Inspector层实现按钮的颜色控制

     //颜色拾取器,第一个参数控制是否显示透明通道,第二参数控制是否使用HDR
        [Header("按钮")]
        public Button button;
    
        [ColorUsage(true)]
        public Color color1;
    
        [ColorUsage(true, true)]
        public Color color2;
    
        private void Update()
        {
            button.GetComponent<Image>().color = color1;
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    5、如何在Unity当中实现两点连线
    可以使用Unity当中LineRenderer组件完成画线的功能

    1、LineRenderer是Unity提供的一个用于画线的组件,可以用于在场景中绘制线段

    用处:
    1、绘制攻击范围
    2、武器红外线
    3、距离计算

    2、LineRenderer的使用
    相关参数
    1、Loop——是否终点起始自动相连
    2、Positions——线段的点

    6、关于一些MonoBehavior的知识点
    1、继承类MonoBehavior类的脚本只能挂载,不能new
    想要生成相关的类

    2、继承类MonoBehavior的脚本可以在一个对象上挂多个

    3、继承MonoBehavior类可以再次被继承,遵循面向对象继承多态的规则

    基于上述规则,因此一个游戏物体会有两个相关的类,一个负责处理数据,一个负责挂载在物体上负责View显示

    7、Unity中的localPosition和Position的区别
    1、localPosition是相对于父对象的坐标。如果改变游戏对象的localPosition,它将移动到相对于父对象的新位置,如果该物体没有父对象,则它的localPosition与Position相同。
    2、Position是世界空间中的绝对坐标。当改变一个游戏对象的Position,无论是否有父对象,都将在全局坐标系中的移动到新位置。

    8、UI卡顿优化原理与实践
    1、Unity为了性能优化会合并Canvas下所有元素
    2、如果把所有面板放在一个Canvas中,会造成重绘
    Canvas优化要点
    1、一个Canvas下的所有UI元素都是合在一个Mesh中的,过大的Mesh在更新时开销很大
    2、一般建议每个较复杂的UI界面,都自成一个Canvas(可以是子Canvas),在UI界面很复杂时,甚至要划分更多的子Canvas
    3、动静分离
    4、Canvas又不能细分的太多,因为会导致DrawCall的上升
    5、把一个面板的UI资源放在一个图集里
    6、背景大图不要和小图放在一个图集里

    Overdraw(GPU)
    造成GPU性能瓶颈的主要原因
    1、复杂的vertext或pixel shader计算
    overdraw:
    光栅化阶段的填充像素过多
    在UGUI中使用Alpha=0的不可见Image参与Raycast,譬如在屏幕空白处点击的响应,然而这些元素虽然在屏幕上不可见,但依然参与了绘制

    UGUI其他优化要点
    1、不处理点击的物体不要挂GraphicsRaycaster
    2、少用LayoutGroup或者Content Size Fitter
    用户操作——重绘——消耗大量计算时间
    写算法自己算
    3、Layout原理:
    遍历SetDirty对象会消耗性能

  • 相关阅读:
    MySQL事务详解(事务隔离级别、实现、MVCC、幻读)
    Java Jdbc处理char 字段
    (MSFT.O)微软2024财年Q3营收619亿美元
    026-为什么要使用接口
    spring boot集成flyway快速入门demo
    HUDI(搭建详细记录附加jar)
    前端设计模式应用
    Angular:通过路由切换页面后,ngOnInit()不会被触发的问题
    esp32和ros2基础篇草稿-micro-ros-
    Jmeter 吞吐量Per User作用
  • 原文地址:https://blog.csdn.net/ht_game/article/details/133777071