当前位置: 首页 > news >正文

虚幻学习笔记12—C++类的实例化

一、前言

        本系列如无特殊说明使用的虚幻版本都是5.2.1,VS为2022版本。在Unity中通常创建的脚本都默认继承了MonoBehavior,都是不能再用代码New而实例化的,虚幻也是一样不能直接New来实例化。在Unity中是通过Instantiate方法来实例化一个游戏对象,虚幻中通过TSubclassOf、StaticClass等操作来实例化一个游戏对象。相比来说虚幻更复杂点。

二、实现

2.1、实例化Object类

        创建一个Object类,然后在MyPawn的开始方法中实例化,代码如下:创建成功后会打印出

	TSubclassOf<UMyObject1> MySubclassObject = UMyObject1::StaticClass();MyTestObject = NewObject<UMyObject1>(GetWorld(), MySubclassObject);if (MyTestObject){UE_LOG(LogTemp, Warning, TEXT("This is a %s"), *MyTestObject->GetName());
}

创建类的默认名称。注意,在引用Object类型的类时一定要在前面加”U"。

2.2、实例化Actor类

创建一个Actor类,然后同样再MyPawan的开始方法中实例化,代码如下,注意Actor类型的类引用

	//实例化一个Actor类TSubclassOf<AMyActor1> MySubclassObject = AMyActor1::StaticClass();AMyActor1* TempActor = NewObject<AMyActor1>(GetWorld(), MySubclassObject);if (TempActor){UE_LOG(LogTemp, Warning, TEXT("This is a %s"), *TempActor->GetName());}

前面一定要加“A”。

2.3、获取一个静态实例GameInstance

对于GameInstance,它不需要再手动实例化,因为这个类比较特殊,是虚幻引擎自动管理,只需要讲其获取到即可,代码如下:

	赋值一个Game InstanceMyGameInstance = Cast<UMyGameInstance1>(GetWorld()->GetFirstPlayerController()->GetGameInstance());if (MyGameInstance){UE_LOG(LogTemp, Warning, TEXT("My Instance Name:%s,IP:%d, UserName:%s"), *MyGameInstance->GetName(), MyGameInstance->IP, *MyGameInstance->UserName);}

三、总结

3.1、此处的实例化的类都只是在内存中,还未真正体现在游戏应用中,比如实例化一个Cube的类,在运行时并不会真的显示一个Cube,如需要真正显示还需通过Load方法,这个后续在讲。

3.2、Object类和Actor类的前缀字母是不同的,Object前面加“U”,为UObject,Actor前面加“A"为AActor。

3.3、GameInstance类不需要手动实例化,它在虚幻引擎运行时就自动创建和销毁,只需要获取即可。

http://www.lryc.cn/news/260546.html

相关文章:

  • 【《漫画算法》笔记】快速排序
  • C++如何通过调用ffmpeg接口对H265文件进行编码和解码
  • 8位LED流水灯设计
  • eclipse连接mysql数据库(下载eclipse,下载安装mysql,下载mysql驱动)
  • 【信息学奥赛】拼在起跑线上,想入道就别落下自己!
  • Python 进程池Pool Queue,运行不出来结果!
  • yolov8实战第二天——yolov8训练结果分析(保姆式解读)
  • ​urllib.request --- 用于打开 URL 的可扩展库​
  • 【Docker】进阶之路:(十二)Docker Composer
  • MES安灯管理:优化生产监控的重要工具
  • Unity中URP Shader 的 SRP Batcher
  • 十四 动手学深度学习v2计算机视觉 ——转置矩阵
  • Spark-Streaming+Kafka+mysql实战示例
  • C++改写为C
  • 抖去推--短视频剪辑、矩阵无人直播saas营销工具一站式开发
  • HBase 详细图文介绍
  • Hanlp自然语言处理如何再Spring Boot中使用
  • MySQL 是什么?
  • yarn link使用(npm link)
  • Docker容器讲解
  • three.js模拟太阳系
  • WPF仿网易云搭建笔记(1):项目搭建
  • DDOS 攻击是什么?有哪些常见的DDOS攻击?
  • 未来应用从何而来:认知力延伸、边界突破、回归云与产业
  • vue零基础
  • html中一个div中平均一行分配四个盒子,可展开与收起所有的盒子
  • Python虚拟环境指南:告别依赖地狱
  • 【Jeecg Boot 3 - 第二天】第2节 前后端docker部署云服务器
  • 2020年第九届数学建模国际赛小美赛A题自由泳解题全过程文档及程序
  • 双端队列和优先级队列