巧妙的将子线程无法调用主线程的API 转化为 子线程传递给空物体上面的Loom,在Loom里面去调用委托来调用主线程API。 Loom.cs: usingUnityEngine;usingSystem.Collections.Generic;usingSystem;usingSystem.Threading;usingSystem.Linq;publicclassLoom:MonoBehaviour{//是否已经初始化staticboolisInitialized;privatestaticLoom_ins...
将子线程中的函数,以委托的形式,传递给listActions,Loom在Updata里面,轮询去调用委托。 巧妙的将子线程无法调用主线程的API 转化为 子线程传递给空物体上面的Loom,在Loom里面去调用委托来调用主线程API。 Loom.cs: using UnityEngine; using System.Collections.Generic; using System; using System.Threading; using...
51CTO博客已为您找到关于unity线程怎么调用主线程的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及unity线程怎么调用主线程问答内容。更多unity线程怎么调用主线程相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。
Function {//异步在多线程下运行Loom.RunAsync(() =>{//这个函数会进行大量文件读写操作LoadLocalFile();//回到unity线程继续运行Loom.QueueOnMainThread(()=>{//这个函数是unity函数UnityFunction(); } } } 这个Loom类的大概思路就是把整个代码块放多线程中,并把需要在主线程运行的代码按委托的方式封装起来...
//回到unity线程继续运行 Loom.QueueOnMainThread(()=> { //这个函数是unity函数 UnityFunction1(); } //耗时函数 DownFile2(); //回到unity线程继续运行 Loom.QueueOnMainThread(()=> { //这个函数是unity函数 UnityFunction2(); } } } 修改后的代码如下 ...
UniRx中有个让多线程更简单的办法:// Observable.Start is start factory methods on specified ...
子线程异步执行主线程 子线程同步执行主线程 到此一个多线程任务队列工具就完成了,一般的需求基本可以满足,后续还可提供更多扩展功能,如传参、取消任务等 另外我个人想尽力将这套工具脱离 UnityEngine.Monobehaviour,但目前还没找到除 Loom 外其他 Unity 获取主线程的方法,当然 Loom 本身仍然是一个很巧妙的工具 ...
我们只需要关系两个函数:RunAsync(Action)和QueueOnMainThread(Action, [optional] float time) 就可以轻松实现一个函数的两段代码在C#线程和Unity的主线程中交叉运行。原理也很简单:用线程池去运行RunAsync(Action)的函数,在Update中运行QueueOnMainThread(Acition, [optional] float time)传入的函数。
/*** * Title: * Date: 2022.11.01 * Author: 玄策 * UnityVersion: 2019.4.28 * Func: 线程里面不能调用主线程的东西,需要用这个脚本 * 使用方法:在线程里面,将主线程的东西注册到一个Action里面,然后调用这个脚本Loom.QueueOnMainThread(Action action); * ***/usingUnityEngine;usingSystem.Collections....
//这里填子线程中 想去主线程调用的代码 ,例如改变UI Debug.Log ("ThreadChild :" + curname); }); Thread.Sleep(1000); } } } void Update(){ //遍历action 在Update中调用action自然是主线程调用 for (int i = 0; i < actionlist.Count; i++) { ...