首页 > 其他分享 >UE中各个对象的创建方法

UE中各个对象的创建方法

时间:2023-06-09 11:01:01浏览次数:55  
标签:UObject 各个 函数 对象 创建 CreateDefaultSubobject TEXT UE

转载自: Unreal Engine 4 C++ 创建对象的几种方法

1.创建Actor对象

创建Actor对象,需要使用UWorld::SpawnActor()接口,如下所示:

/* <CreateObjectDemo> 
* 创建AActor派生类对象不要用NewObject或者new,而要用UWorld::SpawnActor() 
*/  
UWorld* World = GetWorld();  
FVector pos(150, 0, 20);  

AMyActor* MyActor = World->SpawnActor<AMyActor>(pos, FRotator::ZeroRotator);   1234567

2.创建组件

在UE4中,为Actor创建组件,可以使用UObject::CreateDefaultSubobject()模板函数,这个函数只能在构造函数中调用。如下所示:

/* <CreateObjectDemo> 
* 创建Component对象,要使用CreateDefaultSubobject模板函数 
*/  
MyComponent = CreateDefaultSubobject<UMyActorComponent>(TEXT("MyComponent"));  1234

注意:这里有坑,TEXT(“MyComponent”)的名字不能重复!!


3.加载资源对象

在UE4中,项目中的所有资源文件,不要看做是文件,而要理解为“静态对象”:也就是对象序列化的产物。加载项目资源可以使用“UObject::StaticLoadObject()”函数,其中重要的参数为对象的Name,而不是文件路径。UE底层提供文件读取功能,无论资源文件是存储我独立的.uasset文件,还是存储到.PAK文件中,对于上层都不需要关心。

/* <CreateObjectDemo> 
* 加载模型、贴图等对象,使用StaticLoadObject函数 
*/  
UStaticMesh* SM_Vase = Cast<UStaticMesh>(StaticLoadObject(UStaticMesh::StaticClass(),  
    NULL,  
    TEXT("/Game/Assets/StaticMeshes/SM_Vase"))  
    );  

StaticMeshComponent = CreateDefaultSubobject<UStaticMeshComponent>(TEXT("StaticMeshComponent"));  
StaticMeshComponent->SetStaticMesh(SM_Vase);12345678910

4.创建UObject对象

如果你有UObject的派生类(非Actor、非ActorComponent),那你可以使用NewObject()模板函数来创建其实例对象。

/* <CreateObjectDemo> 
 * 使用NewObject模板函数,来创建UObject派生类对象 
*/  
MyObject = NewObject<UMyObject>(); 

标签:UObject,各个,函数,对象,创建,CreateDefaultSubobject,TEXT,UE
From: https://www.cnblogs.com/Vikyanite/p/17468566.html

相关文章

  • 【已解决】可视化ValueError Cannot mask with non-boolean array containing NA NaN
    bug:raiseValueError(na_msg)ValueError:Cannotmaskwithnon-booleanarraycontainingNA/NaNvalues对应的代码:asian_countries=region_data.dropna(subset=['CountryCode'])[region_data['Region'].str.contains('Asia')][&......
  • Vue脚手架配置代理
    前言前端在向后端请求资源时通常会遇到跨域问题,当我们是用vue脚手架构建项目时,可以通过配置代理解决跨域问题参考文档:devServer.proxy方法一:在vue.config.js中添加如下配置:module.exports={devServer:{proxy:'http://localhost:4000'}}说明:(1)、优点:配置简......
  • vue3+ TS pinyin uniapp 索引列表-(A-Z)按首字母排序 ,锚点定位
    获取一维数组地址列表<scriptlang="ts"setup>import{getLocationList}from"@/apis/activity";import{onLoad}from"@dcloudio/uni-app";import{pinyin}from"pinyin-pro"import{ref}from"vue";const......
  • jquery简单体验
    是继prototype之后又一个优秀的Javascript框架。对prototype我使用不多,简单了解过。但使用上jquery之后,马上被她的优雅吸引住了。有人使用这样的一比喻来比较prototype和jquery:prototype就像Java,而jquery就像ruby.实际上我比较喜欢java(少接触Ruby罢了)但是jquery的简单的实用的确......
  • UE5 打开XR示例场景崩溃
    发现UE5的XR示例项目打开一直报错UE5UnhandledException:EXCEPTION_ACCESS_VIOLATION根据参考链接1发现大概是使用OculusRuntime运行时的问题。在SteamVR的开发者选项中重新将OpenXR运行时设定为SteamVR即可正常打开XR示例项目参考链接[Oculus更新后,使用SteamVR开发引......
  • ai问答:Vue3中使用computed和watch监听pinia数据的区别
    在Vue3中,通过computed来监听pinia中的state数据:import{defineStore}from'pinia'import{useStore}from'pinia'import{computed}from'vue'conststore=defineStore('store',{/*...*/})exportdefault{setup(){......
  • [从jQuery看JavaScript]-变量与作用域链(Variable and Scope Chain)
    jQuery片段: 1.var2.//Willspeedupreferencestowindow,andallowsmungingitsname.3.window=this,4.//Willspeedupreferencestoundefined,andallowsmungingitsname.5.undefined,6.//MapoverjQueryinc......
  • jQuery中异步交互技术详细指南
                                                                                                                                      ......
  • Linux Shell 脚本创建日期文件夹
    mk-time-dir.sh#!/bin/bashdir_name=$(date'+%Y%m%d%H%M')mkdir$dir_nameecho"已创建文件夹${dir_name}"#已创建文件夹202306090936参考:Linuxdate命令......
  • DevExpress WPF功能区控件,更轻松创建商业应用工具栏!(上)
    DevExpressWPF的Ribbon、Toolbar和Menus组件以MicrosoftOffice为灵感,针对WPF开发人员进行了优化,可帮助您在段时间内模拟当今最流行的商业生产力应用程序。DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建有......