2·多线程、构建运行模式、断言、tan2、texture设置
UE多线程_CPU
- game,render,RHI,都属于Cpu线程
Runnable、只包含基础的功能
- 语法:
- FRunnable可运行对象
- init 创建线程时调用
- run 初始化完成且成功调用(即开始运行线程,执行一次)
- stop 被提前终止时调用
- exit 完成之后调用
- FRunnableThread运行线程
- Create( FRunnable* InRunnable, const TCHAR* ThreadName)创建线程
- FRunnable可运行对象
- 语法:
TaskGraph、可以控制线程任务的顺序
- 语法:
- TGraphTask定义的任务
- 构造T
- TGraphTask< T >::CreateTask(Params list).ConstructAndDispatchWhenReady(传入构造的参数列表),满足条件立即执行(前置任务是否都完成)
- TGraphTask< T >::CreateTask(Params list).ConstructAndHold(传入构造的参数列表),满足条件且调用Unlock才执行
- Params list
- FGraphEventArray rerequisites:前置任务数组
- ENamedThreads::……Thread指定任务运行的线程
- ETaskFlags::任务标志
- Params list
- GetCompletionEvent()返回FGraphEventRef
- Unlock()执行
- 构造T
- FGraphEvent等待某项任务的任务列表
- FGraphEventRef是FGraphEvent的指针
- FGraphEventArray,FGraphEventRef 的数组
- DontCompleteUntil(FGraphEventRef ), A->DontCompleteUntil(B),延迟执行A直到B完成
- TGraphTask定义的任务
- 语法:
AsyncTask,利用线程池机制来调度任务
- 继承FNonAbandonableTask创建线程类,不会丢弃而且等待执行完
- FAutoDeleteAsyncTask< FNonAbandonableTask* >()->StartBackgroundTask线程池里空闲的线程来执行
- FAutoDeleteAsyncTask< FNonAbandonableTask* >()->StartSynchronousTask主线程执行,会阻塞主线程
- FAutoDeleteAsyncTask任务执行完就会自动删除
AsyncTask、创建了一个立刻执行的任务
- AsyncTask(ENamedThreads::, void func)
- Async、
- AsyncThread、
- AsyncPool
UE构建运行模式
- DebugGameEditor,和DebugGame类似,用于在Unreal Editor中调试
- DevelopmentEditor,和Development类似,用于在Unreal Editor中调试
- DebugGame,包含调试符号,可执行文件较大运行较慢,用于开发阶段,需要打包运行
- Development,保留了部分调试信息,可执行文件被提高性能,用于开发阶段后的测试阶段,需要打包运行
- Shipping,移除所有的调试符号,可执行文件运行速度较快,用于发布模式
UE断言Assert
- 作用:
- 是一种调试手段,可以让程序立即终止,适用于绝对不应该出现的情况,并不影响发布的性能
- 相关宏:
- DO_CHECK是否禁用check
- DO_GUARD_SLOW是否是调试模式
- 分类:
- check族,Expression 如果为false,中断执行
- check(exp);DO_CHECK == 1
- checkf(exp, msg);
- verify(exp);DO_CHECK ==0/1
- verify(exp, msg);
- checkSlow族,Expression 如果为false,调试模式时引擎崩溃,非调试模式不会执行
- checkSlow(exp);
- ensure族,Expression 如果为false,不会中断执行,会打印堆栈信息
- ensure(exp);
- ensureMsg(exp, msg);
- check族,Expression 如果为false,中断执行
UE tan2
UE texture设置
本文由作者按照 CC BY 4.0 进行授权



