首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在C# Unity中调用while(true)的频率是多少?

在C# Unity中调用while(true)的频率是取决于计算机的处理能力和程序的运行环境的。由于while(true)是一个无限循环,它会尽可能快地执行,直到程序被中断或终止。在Unity中,每一帧的更新是由Unity引擎控制的,通常是以每秒60帧的速度进行更新。因此,while(true)循环的频率将取决于每一帧的执行时间。

然而,使用while(true)的无限循环是不推荐的,因为它会导致程序陷入死循环,消耗大量的计算资源,并且可能导致程序无响应。在实际开发中,应该避免使用无限循环,而是使用适当的条件来控制循环的执行。

如果需要在Unity中以固定的频率执行某个操作,可以使用Unity提供的协程(Coroutine)功能或者使用定时器来实现。协程可以让程序在每一帧之间暂停一段时间,从而控制循环的频率。定时器可以在指定的时间间隔内重复执行某个操作。

总结起来,调用while(true)的频率取决于每一帧的执行时间,但是不推荐使用无限循环,而是使用适当的控制方式来实现所需的功能。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Unity3D】Android Studio 工程中使用 Java 代码调用 Unity C# 脚本 ( Java 调用 UnityPlayer#UnitySendMessage 方法 )

方法简介 三、 准备 C# 脚本 四、 Java 示例 一、 Java 调用 C# 依赖库准备 ---- 1、依赖库位置 Android 调用 Unity C# 脚本 , 需要借助 Unity...Unity 导出依赖库 , 会自动添加该依赖库 , unityLibrary libs 下 unity-classes.jar 就是这个依赖库 ; 二、 Java 调用 C# UnityPlayer...#UnitySendMessage 方法简介 ---- com.unity3d.player.UnityPlayer 类 , 调用 UnitySendMessage 方法 , 可以调用 C# 脚本方法...脚本 ---- C# 脚本 , 定义 Test 方法 , 之后 Java 调用该脚本 Test 方法 ; void Test() { Debug.Log("Java...调用 C# 测试方法"); } 该脚本附着到 名称为 Cube 立方体上 , 之后 Java 调用 C# 脚本方法 , 需要根据 游戏物体 GameObject 查找 C# 脚本 ; 完整代码

1.6K20

unity2d3d结合_unity3d脚本编程与游戏开发

集成开发环境,支持C#、BOO和JavaScript等高级编程语言 2>Visual Studio 微软公司开发工具包,包括了整个软件生命周期中需要大部分工具,如团队开发工具、继承开发环境等 Unity...简介 Unity脚本从唤醒到销毁过程 消息:当满足某种条件Unity引擎自动调用函数 也称为必然事件 2>初始阶段 Awake 唤醒: 当物体载入时立即调用1次;常用于游戏开始前进行初始化,可以判断当满足某种条件执行此脚本...: 当脚本销毁或附属游戏对象被销毁时被调用 OnApplicationQuit 当程序结束: 应用程序退出时被调用 4、调试 1>使用Unity编辑器 将程序投入到实际运行,通过开发工具进行测试...工具 (2)Unity项目面板中导入:Visual Studio 20xx Tools 调试步骤: (1)可能出错行添加断点 (2)菜单栏——调试——附加Unity调试程序 (3)Unity...to Processs按钮 UnityPlay场景 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。

1.6K20

C# 自定义控制台输出重定向类整合调用方信息

C# 自定义控制台输出重定向类整合调用方信息 目录 C# 自定义控制台输出重定向类整合调用方信息 一、前言 二、输出重定向基础版 三、输出重定向进阶版(传递调用方信息) 四、后记及资源 独立观察员...Write 方法,然后重写 Write 方法调用外部设置好(通过构造函数)相关委托方法进行实际信息输出。...0); } } } 即新增一个包含了调用方信息三个参数委托 _WriteCallerInfo,以及配套构造方法,然后 Write 方法优先使用 _WriteCallerInfo...另外,引入了一个获取调用方信息方法(改造自《C# 获取当前方法信息,上端调用方方法信息以及方法调用链》): using System; using System.Diagnostics; using...,所以需要 + 1,以此类推 var stack = new StackTrace(true); //0 是本身,1 是调用方,2 是调用调用

1.6K20

Unity3D】Unity 游戏画面帧更新 ( 游戏帧相关概念 | MonoBehaviour#Update() 帧更新方法 | 帧更新时间统计 | 设置游戏更新帧率 )

60 fps , 果 FPS 很低 , 游戏画面就会很卡 ; 二、 MonoBehaviour#Update() 帧更新方法 ---- Unity C# 脚本 MonoBehaviour#...Update() 方法 就是 帧更新 方法 , 每次 更新 画面帧 时 , 都会 调用该方法 , 也就是一秒钟调用几十次到一百多次 ; Unity 游戏中 , 如果要 更新 游戏物体 GameObject...Update() 帧更新方法 执行 Debug.Log("C# 脚本 Update 函数调用 , 游戏帧更新 "); 代码 , 打印日志 , 日志时间力度为秒 , 但是游戏帧率一般是 每秒 几十帧..., 一秒钟就会调用几十次 MonoBehaviour#Update() 帧更新方法 , 这里需要更细时间统计力度 ; Unity C# 脚本获取时间 : 下面的 时间单位是秒 , 类型是 float...: 每一帧间隔从几毫秒到几百毫秒 , 大部分在个位数毫秒值间隔 ; 这个与操作系统时间片分配有关 , 没有办法精准控制 ; 四、 设置游戏更新帧率 ---- Unity 无法精准控制 游戏画面

91520

Unity性能调优手册11PlayerSettings:脚本运行环境,代码裁剪

例如,Windows构建将使用更积极优化,如链接时间代码生成(LTCG)。 作为回报,构建时间将比发布设置更长,但Unity建议可接受情况下使用Master设置进行生产构建。...Strip Engine Code / Managed Stripping Level Strip Engine Code剥离引擎代码是一个Unity功能,允许你设置托管剥离Level来自通过编译c#生成...但是,由于确定是否使用给定代码非常依赖于代码没有直接引用类型,或者反射中动态调用代码,可能会被错误地删除。 在这种情况下,使用link.xml文件或指定Preserve属性。...调用C#,主要会被代码剪裁影响,这时你可以配置ReflectionUse(不要配LuaCallSharp),执行“Generate Code”,这时不会对该类生成封装代码,而是生成link.xml把该类配置为不剪裁...手游项目中使用 Accelerometer Frequency (iOS) 这是一个ios特有的设置,允许你改变加速度计采样频率。默认设置为60hz,请根据实际情况调整频率

28410

Unity性能调优手册2基础:硬件,渲染,数据,Unity如何工作,C#基础,算法和计算复杂度

C#与Runtime 当开发者Unity创造游戏时,他们会使用c#去编程行为。c#是一种编译语言,因为Unity开发游戏时它经常被编译(构建)。...,尽管Unity允许开发者用c#编程游戏,但Unity本身运行时(即引擎)并不是c#运行。...例如,当GameObject.transform是从c#调用,所有游戏执行状态(如场景状态)都是引擎管理,所以首先要进行本地调用以访问本地区域中内存数据,然后将值返回给c#。...引擎本身是本机运行,所以c#Unity API很大程度上也是调用内部本机API接口。...注意,当使用Addressable时,AssetBundle.Unload(true)会在内部调用C#基础 本节描述c#语言规范和程序执行行为,这对性能调优至关重要。

36230

Coroutine,你究竟干了什么?

,然后需要时候,调用StartCoroutine来进行延时即可。   ...// do something   }   代码非常简单,不过是使用foreach来遍历一个整型数组,而代码我们早已习以为常foreach其实就是迭代器语法糖,真正运行代码C#编译器会将上面的代码改头换面成这个样子...而至于yield return,其实是C# 2.0新引进一种实现迭代器模式简便语法,之前C# 1.0,如果要实现一个完整迭代器,我们必须要分别实现IEnumerable和IEnumerator...OK,让我们继续回到Unity,通过上面的这些分析,我们大概就肯定了这么一点:Unity其实是使用了迭代器来实现延时,像IEnumerator、yield return等使用皆是为了配合C#迭代器语法...yield return的话,返回类型就必须是IEnumerable()或者IEnumerator()之一,而C#构造函数是没有返回值,显然不符合这个原则,所以实际上构造函数我们无法使用什么

1K10

手游热更新方案--Unity3D下CsToLua技术

指令将一个对象引用推送 (类型 O) 到一个新字符串对象,表示存储元数据特定字符串文字; OpCodes.Call 字段:调用由传递方法说明符指示方法。...,比如将C#while循环,生成Lua里面的while-end逻辑等。...提供了一套中间层导出工具,对于需要访问CLR、Unity及自定义类预生成Wrap文件,Lua访问时只访问Wrap文件,Wrap文件接收Lua传递来参数,进行类型(值、对象、委托)转换,再调用真正工作...Lua虚拟机启动主流程: [16.png] Unity C#与Lua交互,麻将项目主要采用了Wrap文件这种非反射方式实现。...: [20.png] C#对象传给Lua时并不是直接把对象暴露给了Lua,而是在这个OjbectTranslator里面注册并返回一个索引,并把这个索引包装成一个userdata传递给Lua,并且设置元表

2.4K20

2022年Unity 面试题 |五萬字 二佰道| Unity面试题大全,面试题总结【全网最全,收藏一篇足够面试】

数列1,1,2,3,5,8,13...第 n 位数是多少?用 C#递归算法实现 16. 冒泡排序(手写代码) 17. C#中有哪些常用容器类,各有什么特点。 18.... C# 只能在unsafe不安全模式下才使用指针。 C# 以不同方式执行重载运算符。 字符串:C# 字符串不同于 C++ 字符串。...析构函数: C# ,不能控制析构函数调用时间,原因是析构函数由垃圾回收器自动调用。 析构函数 构造函数:与 C++ 类似,如果在 C# 没有提供类构造函数,则为您自动生成默认构造函数。...注意:仅能从主线程访问Unity3D组件,对象和Unity3D系统调用C#中有lock这个关键字,以确保只有一个线程可以特定时间内访问特定对象 40....将动态UI元素和静态UI元素放在不同Canvas,减少canvas网格重构频率 4.

22.1K1729

Unity开发入门-环境安装及素材导入

VSCode + CodeGeeX整体体验还可以,但是没有支持C#类似于IDEAvar快捷添加定义方式。...使用VSCode 默认编辑器是Visual Studio,个人感觉也是更智能开发工具, 但是如果电脑配置差的话,推荐VSCode作为代码编辑器 VSCode安装C#插件 安装插件后,设置取消下面这个勾选...生命周期方法 Unity,MonoBehaviour是所有脚本基类,它提供了一系列生命周期方法,用于游戏运行过程管理脚本行为和状态。...Start():脚本实例创建完成后第一帧调用,用于进行一次性初始化操作。通常用于设置游戏对象初始状态。 Update():每一帧进行更新时调用,用于处理游戏逻辑。...与Update()不同,FixedUpdate()调用频率是固定,不受帧率影响。

33330

【100个 Unity实用技能】| Unity读取本地文件(Json,txt等)三种方法示例

Unity 实用小技能学习 Unity读取本地文件(Json,txt等)两种方法 Unity中经常会用到读取本地文件方法,所以本篇文章写了两种简单方法做示例来看一下,如果有更方便方法也希望看到本文小伙伴评论区补充一下哦...本文中加在文件路径统一用:Application.streamingAssetsPath ,也就是项目中Assets/StreamingAssets路径 关于Unity几种路径介绍可以看这篇文章...: 【100个 Unity实用技能】| Unity中常用几种路径 分析,不同平台路径总结 Json文件很简单,内容如下: 第一种:System.IO读取本地文件 这种方法是比较常用一种,通过IO...需要导入命名空间System.IO; 这也是C#语言读取文件一种常用方式。...Json:" + readData); yield return null; } } 第二种:WWW方式读取文件 WWW类是Unity网络开发中使用频率非常高一个工具类,主要提供一般

2.4K10

Unity性能调优手册9UnityScript:空生命周期函数,tags,组件,string,显式销毁类(Texture2D、Sprite、Material),burst

我从UnityCsReference引用了他们各自实现。您可以看到,这两个调用进程都是用本机代码实现Unityc#实现脚本,但Unity本身是用c++实现。...这是每次调用它时完成,所以如果您想多次访问它,您应该缓存它 有关Unity如何在c#和c++之间工作和内存更多信息,请参阅“Unity Runtime”。...将条件属性添加到自制类端每个函数是一个好主意,作为通过自制日志输出类调用Unity日志函数规则,这样可以必要时删除整个函数调用。...#define定义符号作用域将被限制写入它们文件每个调用带有条件属性函数文件定义一个符号是不实际。...有关hpc#更多细节,请参考脚注列出文档。 Burst与c#作业系统一起使用。因此,它自己处理实现IJob作业Execute方法描述。

17710

Unity巧用协程和游戏对象生命周期处理游戏重启问题

来验证一下上面的说法: 1、如果真的是一帧执行一次,那我就设定Unity帧率为1(即1秒只执行一次Update); 2、Start()函数之后,启动一个协程,里面跑一个死循环 while (true...因为C#脚本通常都会挂载到一个场景(Scene)或者一个游戏对象(GameObject)上,而重启就势必会销毁场景,这样脚本里函数Destroy就不会再被执行了。...我示例中使用是点击按钮时,调用函数重启方法(Restart) Restart方法只干了一件事,new一个GameObject对象出来,当这个GameObject被实例化时,该类Start函数会被调用...,然后Start函数执行:销毁 –> 间隔一段时间(用上面的yield return null或者Unity提供延时处理指令) –> 初始化 –> 销毁 new出来GameObject对象。...Coroutine 使用筆記 [2] 对UnityCoroutines理解 [3] Unity 协程运行时监控和优化

2.9K20

Unity应用架构设计(10)——绕不开协程和多线程(Part 2)

对于Unity而言,又提供了另外一种『异步』概念,就是协程(Coroutine),通过反编译,它本质上还是主线程上优化手段,并不属于真正多线程(Thread)。...那么问题来了,怎样Unity中使用多线程呢?...Thread 初步认识 虽然这不是什么难点,但我觉得还是有必要提一下多线程编程几个值得注意事项: 线程启动 Unity创建一个异步线程是非常简单,直接使用类System.Threading.Thread...Dispatcher引入 是不是觉得多线程好简单,好像也没想象那么复杂,当你愉快多线程访问UI控件时,Duang~~~,一个错误告诉你,不能在异步线程访问UI控件。...public void BeginInvoke(Action action){ while (true) { //以原子操作形式,将 32 位有符号整数设置为指定值并返回原始值

1.8K110

Unity3D】Unity 脚本 ② ( Visual Studio 2019 Unity 编译环境配置 | Unity 编辑器关联外部 C# 脚本编辑器 Visual Studio )

2019 Unity 编译问题 ---- 在上一篇博客 【Unity3D】Unity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 打开 C# 脚本 | 编译 C#...脚本 | 挂载 C# 脚本到游戏物体 | 运行脚本 ) , 双击 Unity 编辑器 Project 窗口中 C# 脚本 , 进入到 Visual Studio 中出现下图样式 , 这是因为没有配置...否则无法 VS 运行 Unity C# 脚本 , 或者没有代码提示 ; 二、 Unity 编辑器关联外部 C# 脚本编辑器 ---- Unity 编辑器 , 选择 " 菜单栏 | Edit...版本 , Unity Hub 安装开发环境时 , 安装失败 ; 三、 设置游戏运行时脚本更新行为 ---- Preferences 对话框 General 选项卡 , 将 Script...Changes While Playing 选项设置为 Recompile After Finished Playing , 也就是说如果在播放过程 , C# 脚本发生了改变 , 则等到播放完毕后再重新编译

2.5K20

用ECMAScript4 ( ActionScript3) 实现Unity热更新 -- CustomYieldInstruction 自定义中断指令

这次来建立一个示例,演示一下如何在脚本自定义协程中断指令 Unity协程 unity协程经常被用到,从本质上来讲,当调用startCoroutine时,传入参数是一个实现IEnumerator...每调用一次,就会访问一个对象,但是这个MoveNext()可以被决定在什么时候调用,不一定是一个循环中一次性执行完毕, 也可以决定每帧执行一次,甚至还可以等待某种条件达成时才继续执行,等等。...如此,协程可以自然将某一串操作分摊到多帧执行,给人一种类似多线程效果,但是这不是多线程。 yield关键字 yield是C# 2.0开始提供一个语法糖。...这个当前集合对象被Unity拿来做文章, 通过它来指示Unity对这个协程下一步操作行为,例如是继续等待,或者是调用MoveNext来将协程方法推进到下一步。...热更新脚本实现 按照Unity示例,它展示了当点击鼠标左键时,启动一个协程,然后此协程一直等待,直到鼠标右键被点击后继续执行。 我们可以直接在热更新移植实现如上逻辑。 创建一个新热更项目。

1.4K90

Android 与 Unity扯不清关系

历史背景 近期游戏SDK接入技术支持,不断有游戏反馈希望有现成unity插件可以直接接入,为了减轻和方便游游戏方接入,对SDK进行unity插件开发 用到兵器 1、Android studio...新建unity场景.png 2、unityproject下assert目录下新建plugins目,然后再plugins目录下,新建Android目录,将项目的AndroidManifest.xml...需要用到插件信息.png 3、Assert目录下创建Scripts目录(这个主要是这边用于存放C#脚本文件,直接放Assert级目录下也是可以) ?...: 1、AndroidJavaClass 这个就是相当于C#到AndroidJava映射 ---- 调用静态方法Android静态方法 和获取对应静态字段 AndroidJavaClass...C#代码: Unity C#代码实现Android Java 代码必须要完全一致,但是允许UnityC#代码实现多次 class SDKCallbackListener : AndroidJavaProxy

2K20

【小Y学算法】⚡️每日LeetCode打卡⚡️——30.平衡二叉树

C#方法:序遍历 ????Java 方法一:自顶向下递归 ????Java 方法二:自底向上递归 ????总结 ????往期优质文章分享 ---- ????前言 ????...示例 3: 输入:root = [] 输出:true 提示: 树节点数范围 [0, 5000] 内 -104 <= Node.val <= 104 ---- ????...C#方法:序遍历 这道题中平衡二叉树定义是:二叉树每个节点左右子树高度差绝对值不超过 11,则二叉树是平衡二叉树。...提交击败了73.75%用户 内存消耗:27 MB,在所有 C# 提交击败了94.38%用户 复杂度分析 时间复杂度:O( n^2 ),其中 n 是数组长度。...如果使用自底向上做法,则对于每个节点,函数 height 只会被调用一次。

26110

foreach, 用还是不用,这是一个问题~

接触过C#循环朋友,想来对foreach应该不会陌生,相比一般for循环方式,foreach显得更加优雅简洁,Unity支持C#脚本,平日使用数组列表什么自然也会遇到不少,想来foreach...有鉴于此,建议大家平日尽量限制使用foreach,转而使用for之类循环控制语法,尤其注意一下Update(或者说频繁调用函数)foreach使用,不小心的话确实会导致频繁GC~   OK,基础知识普及完毕...说到这个问题,我们便需要进一步认识一下foreach了,相比传统for,foreach其实是C#一种语法糖,还拿上面的测试程序举例,foreach一个List最后会被C#翻译为大概下面这种形式:...foreach即可,因为就像上面看到那样,foreach原生数组并不会产生GC Alloc;最后,其实新版C#早已修复了foreach会产生额外内存申请问题,只是由于Unity内含Mono版本较早...,没有修复该问题罢了,如果你想痛快Unity中使用foreach,可以看看这里和这里~   OK,没想简单一个foreach也讲了这么多东西,其中知识其实网上早已有了很多优秀解释,知乎上一篇相关问答想来应该是个不错起点

1.4K11
领券