UEC++生成Actor
1、直接生成Actor 1GetWorld()->SpawnActor<AActor>(); 1GetWorld()->SpawnActor(AActor::StaticClass()); 12UWorld* world = GetWorld();world->SpawnActor<AActor>(AActor::StaticClass()); SpawnActor 在 world 类中的定义 123456789101112131415161718192021222324252627282930313233343536373839/** Templated version of SpawnActor that allows you to specify a class type via the template type */ template< class T > T* SpawnActor( const FActorSpawnParameters& SpawnParameters =...
UEC++ 解决 AddOnScreenDebugMessage 输出中文乱码
在使用 AddOnScreenDebugMessage 进行日志输出时,输出中文会导致乱码情况 1GEngine->AddOnScreenDebugMessage(-1, 10, FColor::Green, TEXT("消息")); 结果: Click for Mouse Control XX 原因是所使用编码集无法解释中文字符 ###解决办法: 使文件处于未保存状态,在文件中找到高级保存选项,然后将编码格式设置为UTF-8 如果使用的Vs中没有高级保存选项,可以在工具自定义中将其添加上去 自定义->命令->菜单栏->添加命令 在添加命令中添加文件,高级保存选项 设置完之后再重新编译就可以正常显示中文日志输出
UEC++消亡Actor通知
1、Destroyed函数 调用自身Destroy函数进行强制消亡操作 当对象被删除时(非内存删除)进行回调操作 参数说明 bNetForce 是否强制网络同步删除 bShouldModifyLevel 主要是用来控制先删除actor再修改关卡,还是先修改关卡再删除actor,默认是true,即为先修改关卡,再删除actor(修改关卡即为把actor先移除出场景) 1Destroyed(); 在Actor中的定义 1234567void AActor::Destroyed(){ RouteEndPlay(EEndPlayReason::Destroyed); ReceiveDestroyed(); OnDestroyed.Broadcast(this);} Actor被标记为等待销毁并从关卡的Actor阵列中移除。 12// 两秒后销毁 SetLifeSpan(2); 设置延时删除(单位秒) 注:这里的 Destroy 和 SetLifeSpan...
UEC++ 输出方式
1、使用PrintString输出 12#include "Kismet/KismetSystemLibrary.h"UKismetSystemLibrary::PrintString(this, TEXT("hello!")); 格式化输出,使用方法和C语言print函数一样 12#include "Kismet/KismetSystemLibrary.h"UKismetSystemLibrary::PrintString(this, TEXT("Num = %d"),Num); 2、使用Engine的Debug功能 12#include "Engine.h"GEngine->AddOnScreenDebugMessage(-1, 20, FColor::Green, FString(TEXT("hello!"))); 3、打印到日志 12#include "Engine.h"UE_LOG(LogTemp, Warning,...
UEC++ 多线程(二) AsyncTask
AsyncTask AsyncTask系统实现的多线程与自己实现继承的FRunnable实现的原理相似,还可以利用UE4提供的线程池。当使用多线程不满意时也可以调用StartSynchronousTask改成主线程执行。 来自头文件 AysncWork.h 文件中注释,直接仿照注释来实现AsyncTask 123456789101112131415161718192021222324252627282930313233343536FAutoDeleteAsyncTask - template task for jobs that delete themselves when completeSample code:class ExampleAutoDeleteAsyncTask : public FNonAbandonableTask{ friend class FAutoDeleteAsyncTask<ExampleAutoDeleteAsyncTask>; int32 ExampleData; ...
UEC++ 多线程(一) FRunnable
虚幻官方文档:https://docs.unrealengine.com/5.0/en-US/API/Runtime/Core/HAL/FRunnable/ FRunnable “runnable”对象的接口。 可运行对象是在任意线程上“运行”的对象。调用使用模式是Init()、Run()、Exit()。将要“run”这个对象的线程总是使用那些调用语义。它在创建的线程上执行此操作,以便在这些调用的上下文中可以使用任何特定于线程的使用(TLS等)。“runnable”在Init()中完成所有的初始化。 如果初始化失败,线程将停止执行并返回错误代码。如果成功,则在执行真正的线程工作的地方调用Run()。完成后,调用Exit()以允许正确的清理。 函数 void Exit() 退出可运行对象 bool Init() 初始化可运行对象。 uint32 Run() 运行可运行对象。 void Stop() 停止可运行对象。如果请求线程提前终止,则调用此函数。 FSingleThreadRunnable...
UE5异步实现方式_ue5 asynctask
1)、AsyncTask 一套基于线程池的异步任务处理系统。每创建一个AsyncTask,都会被加入到线程池中进行执行 12345678910111213141516171819202122232425262728293031323334353637383940414243// Fill out your copyright notice in the Description page of Project Settings.//MyAsyncTask.h #pragma once#include "Async/AsyncWork.h"class FMyAsyncTask : public FNonAbandonableTask{ friend class FAutoDeleteAsyncTask<FMyAsyncTask>;public: FMyAsyncTask(); void DoWork(); FORCENOINLINE TStatId GetStatId() const { ...
测试工具使用心得:Testbed与Klocwork
在测评工作中,一般静态分析和逻辑测试使用Testbed工具帮助测试,代码扫描使用Klocwork工具辅助分析,本文是在测试过程中的总结。 一、测试类型的思考 逻辑测试:选取核心代码进行插桩,将插桩后代码替代原代码进行编译,执行用例,使相关功能全部执行完成,通过testbed测试工具对软件的语句/分支覆盖情况进行检查,并对未覆盖的语句进行原因分析: 1) 逻辑测试选定的代码要有针对性的选择关键模块代码,这样会更有说服力; 2) 插装后的程序应按照步骤进行修改,要不会分析不出覆盖率数据; 3) 如果分析的覆盖率数据达不到指标要求,应仔细分析覆盖率报告中那些程序未执行到,针对这些未执行到的代码,有针对性的执行动态测试用例,根据输出的覆盖数据再进行覆盖率分析; 4)...
白盒测试工具Testbed 白盒测试 工具
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。 白盒测试是一种典型的测试方法 • 它是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的一种测试方法 • 测试覆盖全部代码、分支、路径和条件 • 它利用查看代码功能和实现方式得到的信息来确定哪些需要测试、哪些不需要、如何展开测试 • 又称为结构测试或逻辑驱动测试 白盒测试特点主要有 •1. 可以构成测试数据使特定程序部分得到测试 •2. 有一定的充分性度量手段 •3. 可获得较多工具支持 •4....
使用testbed进行代码静态分析的步骤详解
使用testbed进行代码的静态分析主要有四个步骤: 选择分析对象 分析前的设置 分析项的选择与分析过程 查看分析结果 1、选择分析对象 可通过两种方式选择被分析对象:单个文件分析、以集(set)的形式分析,其中以set形式可一次分析多个文件 进行单个文件分析时,点击testbed菜单file-select file打开要分析的文件点击select即可,可在工具快捷按钮栏下方看见所选择的文件 以set形式进行分析时,点击testbed菜单Set-select/create/delete sets创建一个set 输入set名点击create后会弹出set的属性设置对话框,有两种属性:group和system 创建好set后可看见set名及其属性 接下来向集合中添加文件,点击testbed菜单set-list/add/remove files in sets,在弹出的对话框中点击add添加多个文件到set中 2、分析前的设置 基本静态设置 点击testbed菜单configure-static option,弹出static analysis...








