【unity细节】—怎么将unity编译时和运行时的功能隔开

这篇具有很好参考价值的文章主要介绍了【unity细节】—怎么将unity编译时和运行时的功能隔开。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


【unity细节】—怎么将unity编译时和运行时的功能隔开


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

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

本文由 秩沅 原创

收录于专栏:unity细节和bug


⭐怎么将unity编译时和运行时的功能隔开的问题⭐



🎶描述


  • 当编译下执行的代码功能和运行行时执行的代码功能同时存在时,要注意防止性能的消耗,防止编译时的功能在运行时也执行
    【unity细节】—怎么将unity编译时和运行时的功能隔开

  • 图片解释:此时获取子物体的API因为特性的原因,在编译时也允许执行,但是在运行时,本该在编译时的代码会消耗性能


🎶解决


【unity细节】—怎么将unity编译时和运行时的功能隔开

  • 用Application.isPaly -----是否是运行时
  • 隔开
 private void OnGUI()
    {
        foreach (ControlFather  item in allContorls)
        {
            //1.表示没有运行时(编译时)也来获取,Start是点击运行时可以获取
            //2.避免了运行时重复执行该API。消耗性能
            if( !Application.isPlayer)
            {
                allContorls = this.GetComponentsInChildren<ControlFather>();
            }
            item.Judge();
        }
    }

解决了点个赞,关注下吧✅


👍每天一学


👨‍💻十大常见的生命函数


👨‍💻Reset()://重置函数,


调用情况和时间:
编译器不运行的情况下 和 使用脚本组件Reset功能的时候, 挂脚本的时候

调用次数: 1次


👨‍💻 Awake(); //苏醒函数


调用情况和时间:

1.点击运行的时候

2.组件从失灵到激活的时候,但只调用一次

3.Instantiate方法调用的时候

调用次数: 1次


👨‍💻OnEnable(); //组件调用函数


调用情况和时间: 组件从失灵到激活的时候,可多次实现

调用次数:只要组件有失灵到激活的状态就可调用 ,


👨‍💻Strat():


调用情况和时间: 当游戏物体被激活,或者脚本组件被激活时调用 , (点击运行的时候也是会被激活)

调用次数: 1次


👨‍💻FixedUpdate(每帧)


一般用作物理更新

调用情况和时间: FixedUpdate一般适用在相关物理引擎中。它的频 率是0.02秒,是固定的。

调用次数: 大概每秒50次左右、

FixedUpdate & Update & LateUpdate的 区别详解


👨‍💻UpData(每帧) ;


一般用作游戏逻辑更新 update取决于电脑显卡的性能,好的话,快,不行的话就慢,所以相比Fixed Update它具有随机性。

调用情况和时间: 在以上生命周期函数之后,每帧调用一次

调用次数: 大概每秒60次左右

变量赋值生效顺序:

变量声明直接赋值 > 检视面板赋值 > Awake > Enable > 外部赋值 > Start


👨‍💻LateUpate(每帧):


一般用作相机更新 它的执行顺序在update的后面,一般适用于相机的跟随,物体运动在update中,相机跟随在LateUpdate,这样会减少误差,避免出现不必要的瑕疵。

调用情况和时间: 在Update调用之后,并且也是每秒60帧左右(适用于物体移动后的视角跟随)

调用次数: 大概每秒60次左右


👨‍💻OnGUI(每帧)


  • 它一般与界面化,渲染,UI等有关,实时执行,比如想在幕布上弄个按钮button

👨‍💻OnDisable():


调用情况和时间: 和OnEnable差不多,但是Disable是组件从完好到失活的状态, (相当于关闭组件的时候)

调用次数: 组件从激活到失灵的时候调用(二者前提是在游戏运行的时候)


👨‍💻OnApplicationQuit()


调用情况和时间: 当所有游戏物体退出时调用,适用于打包的时候

调用次数: 满足以上情况便调用


👨‍💻OnDestroy();


调用情况和时间: 适用于物体的销毁,删除,以及游戏的停止退出时

调用次数: 满足以上情况便调用


⭐相关文章⭐

⭐【2023unity游戏制作-mango的冒险】-开始画面API制作

⭐【unity游戏制作-mango的冒险】-场景搭建

⭐“狂飙”游戏制作—游戏分类图鉴(网易游学)

⭐本站最全-unity常用API大全(万字详解),不信你不收藏



你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!文章来源地址https://www.toymoban.com/news/detail-514344.html

到了这里,关于【unity细节】—怎么将unity编译时和运行时的功能隔开的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Unity细节】为什么UI移动了锚点,中心点和位置,运行的时候还是不在设置的位置当中

    👨‍💻个人主页 :@元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 😶‍🌫️收录于专栏 :unity细节和bug 😶‍🌫️优质专栏 ⭐【软件设计师高频考点暴击】 此时我已经将锚点设置为左上角,但是运行时它不在左上角,而是在中间 它的父对象不

    2024年02月05日
    浏览(75)
  • Unity编译运行安卓app时报错/Users/bokken/buildslave/.../GUIUtility.cs:189

    编译出错结果如下所示 Build completed with a result of ‘Failed’ in 8 seconds (7835 ms) UnityEngine.GUIUtility:ProcessEvent (int,intptr,bool) (at /Users/bokken/buildslave/unity/build/Modules/IMGUI/GUIUtility.cs:189) 今天在编译运行安卓app时报的错误 unity版本: 2021.3.16 目前具体原因未知 File - build Settings - build 此步骤

    2024年02月15日
    浏览(39)
  • vscode编译时的报错解决办法

    主要问题是: “调试”是“ UnityEngine.Debug”和“系统”之间的歧义引用 所以命名空间要指定清楚: UnityEngine.Debug.Log(\\\"I’m a Musician, My name is \\\"+ name); 或者暂时不需要Diagnostics可以先注释掉 using System.Diagnostics; Attempted to update project that is not loaded: /Users/zhangsan/Desktop/Engine/gamer/My p

    2024年02月08日
    浏览(49)
  • 什么叫运行时的Java程序?

    开发人员在Java开发环境中输入程序代码,形成后缀名为.java的Java源文件。 使用Java编译器对源文件进行错误排查,并生成后缀名为.class的字节码文件。 JRE中的Java解释器将字节码文件翻译成机器代码并执行,显示程序运行结果。 JRE (Java Runtime Environment,简称JRE,Java运行时环

    2024年03月14日
    浏览(69)
  • MySQL运行时的可观测性

    1.说在前面的话 2.安装employees测试库 3.观测SQL运行状态 3.1 观测SQL运行时的内存消耗 3.2 观测SQL运行时的其他开销 3.3 观测SQL运行进度 感知SQL运行时的状态 在MySQL里,一条SQL运行时产生多少磁盘I/O,占用多少内存,是否有创建临时表,这些指标如果都能观测到,有助于更快发现

    2024年02月12日
    浏览(42)
  • C++ | 探究拷贝对象时的一些编译器优化

    👑作者主页:@烽起黎明 🏠学习社区:烈火神盾 🔗专栏链接:C++ 在传参和传返回值的过程中,一般编译器会做一些优化,减少对象的拷贝,这个在一些场景下还是非常有用的 经过深度探索类的六大天选之子学习,我们讲到了拷贝构造一些基本概念和调用形式 经过构造函数

    2023年04月19日
    浏览(85)
  • 开发Flutter时点击运行时的报错

    Could not build the precompiled application for the device. Error (Xcode): No profiles for \\\'com.jiniu.paymentpro\\\' were found: Xcode couldn\\\'t find any iOS App Development provisioning profiles matching \\\'com.jiniu.paymentpro\\\'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebui

    2024年02月10日
    浏览(31)
  • 运行 `npm install` 时的常见问题与解决方案

    描述: 运行 npm install 时,可能会遇到网络连接问题,导致无法正常下载依赖包。 报错示例: npm ERR! network connection timed out npm ERR! connect ETIMEDOUT npm ERR! getaddrinfo EAI_AGAIN 解决方案: 确保你的计算机已连接到互联网。可以尝试打开浏览器,访问其他网页来确认网络连接正常。 检

    2024年02月07日
    浏览(66)
  • 编译linux内核模块时的make -C M= modules的参数说明

            在linux下编译可加载内核模块形成.ko文件的makefile中的核心语句是: 这句是Makefile的规则:这里的 $(MAKE)就相当于make ; -C 选项的作用是指将当前工作目录转移到你所指定的位置,一般都是内核源代码目录或者内核headers目录,如/usr/include/linux-5.1.1-headers/类似的位置

    2024年02月04日
    浏览(53)
  • Unity3d C#实现场景编辑/运行模式下3D模型XYZ轴混合一键排序功能(含源码工程)

    在部分场景搭建中需要整齐摆放一些物品(如仓库中的货堆、货架等),因为有交互的操作在单个模型上,每次总是手动拖动模型操作起来也是繁琐和劳累。 在这背景下,我编写了一个在运行或者编辑状态下都可以进行一键排序模型的脚步。方便在场景搭建时,可以快速搭建

    2024年01月17日
    浏览(72)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包