首页 > 其他分享 >一些常用代码示例

一些常用代码示例

时间:2023-04-28 10:01:28浏览次数:44  
标签:常用 UObject return 示例 代码 static const include GEngine

反正记不住

1.获取世界UWorld

1 UWorld* World = GEngine->GetWorldFromContextObjectChecked(GetOuter()); //GetOuter()返回该对象所在的UObject

 

2.判断是在游戏模式下运行(Game、PIE)

if (GWorld->IsGameWorld())
{
    // 在游戏模式下运行
}
************************************************************
if (GEngine->GetWorld()->IsPlayInEditor())
{
    // 在PIE模式下运行
}
else
{
    // 在Game模式下运行
}

 

3.类型转换Cast

1 1.ASGameMode* MyGameMode = Cast<ASGameMode>(GetWorld()->GetAuthGameMode());  //GetWorld()->GetAuthGameMode();获取当前游戏模式
2 2.return (T*)Ret; //把类 Ret 转换成 T

 

4.获取游戏模式GameMode

1 /**在 World.h 中:
2         * Returns the current Game Mode instance, which is always valid during  gameplay on the server.
3         * This will only return a valid pointer on the server. Will always return  null on a client.
4         */
5        AGameModeBase* GetAuthGameMode() const { return AuthorityGameMode; }
6 
7 应用:
8     ASGameMode* MyGameMode = Cast<ASGameMode>(GetWorld()->GetAuthGameMode());

 

5.定时器

FTimerHandle Handle;
GWorld->GetTimerManager().SetTimer(Handle, this,&UMaJaComponent::ShakeLoop,0.1f,true);

Lambda表达式写法
GWorld->GetTimerManager().SetTimer(Handle, [=]() {...代码区},1.0f,false);

 

6.使用延时

1 FPlatformProcess::Sleep(0.03)   //include "Runnable.h"

 

7.c++中引用蓝图资源

这是第三人称模板里的构造函数之一
AHaingGamgGameMode::AHaingGamgGameMode()
{
       // set default pawn class to our Blueprinted character
       static          ConstructorHelpers::FClassFinder<APawn>  PlayerPawnBPClass(TEXT("/Game/ThirdPersonCPP/Blueprints/ThirdPersonCharacter"));
       if (PlayerPawnBPClass.Class != NULL)
       {
              DefaultPawnClass = PlayerPawnBPClass.Class;
       }
}

 

8.获取游戏屏幕大小

 1 #includ "GEngine.h"
 2 
 3 FVector2D SSlAiMeunHUDWidget::GetViewportSize() const
 4 {
 5        FVector2D Result(1920,1080);
 6        if (GEngine && GEngine->GameViewport)
 7        {
 8            GEngine->GameViewport->GetViewportSize(Result); //参数是引用
 9        }
10        return Result;
11 }

 

9.const FString常量字符串

1 const static FString PassCode;
2 第一:static修饰的 需要静态的初始化值,由于是const修饰的常量,初始化也要用const修饰
3 const FString ULockCodeSG::PassCode = FApp::GetProjectName();
4 第二:const 修饰的参数不能参与反射
5 会提示 Const properties are not supported.不支持Const属性。

 

10.获取项目的项目名称

1 FApp::GetProjectName();
2 蓝图不知道,C++可以这样获取

 

11.UE使用windows.h头文件加入方法

1 #include "Windows/AllowWindowsPlatformTypes.h"
2 #include "Windows/PreWindowsApi.h"  // 好像UE5不需要这个了
3 //此处写要调用的windows的头文件
4 #include "Windows/PostWindowsApi.h"   //好像UE5不需要这个了
5 #include "Windows/HideWindowsPlatformTypes.h"

 

12.C++内添加组件

1 .h
2 UPROPERTY()   //想在蓝图获取就要反射,不然无法从组件窗口拖到蓝图窗口
3 UAudioComponent* AudioComponent;
4 static FName AudioComponentName;
5 
6 .cpp
7 FName AActorT::AudioComponentName(TEXT("AudioComponent"));
8 AudioComponent = CreateDefaultSubobject<UAudioComponent>(AudioComponentName);

 

13.设置运行窗口大小

1 //窗口尺寸
2 r.setres 1920x1080w
3 //分辨率
4 r.setres 1920x1080f
调用 UKismetSystemLibrary::ExecuteConsoleCommand()

 

14.以UObject作为函数库使用


思维误区,每次写函数库都继承的是“蓝图函数库类”(不记得叫啥了)
其实如果把行常用函数写到Actor内,这个Actor不就是一个函数库了吗?
同理UObject比Actor更适合这样子。那么只需要在这个UObject类中写一个static方法创建这个类即可。
1 class  XXX_API UXXXLibrary : public UObject
2 {
3 public:
4     UFUNCTION(BlueprintCallable)
5     static UXXXLibrary* CreateXXXLibrary()
{
return NewUObject<UXXXLibrary>();
} 6 }

 

15.引擎版本号获取( 条件编译技术)

1 ENGINE_MAJOR_VERSION  引擎主版本 4.26中的4ENGINE_MINOR_VERSION  引擎次版本 4.26中的26
2 
3 #if ENGINE_MAJOR_VERSION == 4 && ENGINE_MINOR_VERSION <= 25
4       //如果主版本为4,次版本<=25 即4.25及以前的版本
5 #else
6        //4.25之后的版本
7 #endif

 

16.读取本地文件

1 本地文件都是以二进制数据存放在本地的,
2 FString FilePath = FPaths::ProjectSavedDir() + TEXT("image.jpg");
3 TArray<unit8> Content;
4 FFileHelper::LoadFileToArray(Content, *FilePath)
5 主要方法就是FFileHelper::LoadFileToArray

 

17.

 

 

 

 

 

 

 

 

 

标签:常用,UObject,return,示例,代码,static,const,include,GEngine
From: https://www.cnblogs.com/fuhaiqing/p/17361009.html

相关文章

  • 【Dotnet 工具箱】JIEJIE.NET - 强大的 .NET 代码混淆工具
    你好,这里是Dotnet工具箱,定期分享Dotnet有趣,实用的工具和组件,希望对您有用!JIEJIE.NET-强大的.NET代码混淆工具JIEJIE.NETJIEJIE.NET是一个使用C#开发的开源.NET代码加密工具。很多.NET开发人员担心他们的软件被破解,版权受到侵犯,所以他们使用一些工具来混淆IL......
  • VIM常用配置项
    "1.设置行号:在.vimrc文件中添加下面这行代码可以打开行号显示:setnumber"2.自动缩进:Vim自动缩进功能可以让你的代码更美观,可以通过添加以下两行代码来启用:setautoindentsetsmartindent"3.高亮显示语法:以下代码可以高亮显示当前文件的语法:syntaxon"4.显示文件类型:以......
  • 上篇:带你手工体验从写代码、编译、打包镜像、部署到K8S的全过程
    本篇使用的gowebdemo,页面很简单,功能也是很简单,写代码不是本篇的重点,重点是先体验一下整个流程:开发环境准备、写代码、提交到仓库、拉取代码构建并打包镜像、推送到镜像仓库,部署到K8S。本篇的分享分为上篇和下篇,上篇是手动,计划在下篇再讲自动。只有手动体验过,才能更能深入的理......
  • C# 卡车装车示例
    usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;publicclassTruckLoader:MonoBehaviour{//货物信息结构体publicstructCargoInfo{publicfloatlength;//长度publicfloatwidth;//宽度......
  • C# 卡车装车示例(二)
    1.创建一个货物类,包含长、宽、高、重量、颜色、标签等属性,并定义一个列表用于存储所有货物对象。publicclassCargo{publicfloatlength;publicfloatwidth;publicfloatheight;publicfloatweight;publicColorcolor;publicstringlabel......
  • ORA-01810 格式代码出现两次,日期格式,时间格式,to_date错误
    这个错误的原因是使用了两次MMto_date('YYYY-MM-DDHH:MM:SS')需要把分钟的MM改成MIto_date('YYYY-MM-DDHH:MI:SS')这样可能会出现小时变成了上下午的12小时格式,所以可以给小时设置成24小时格式to_date('YYYY-MM-DDHH24:MI:SS')黑色头发:http://heise......
  • swagger2的常用注解,传递参数的注意使用方法
    背景介绍:刚开始的时候,在controller层使用@RequestParam的时候,发现这个参数是必须要输入值的,但是我们有时候必须查询的时候允许参数为空,使用这个注解就不行了。在集成了swagger2后,找了半天的原因,发现使用@ApiImplicitParam这个注解可以解决这个问题。对应下面的参数。所以我们可以使......
  • Java-Day-16( 常用类 )
    Java-Day-16常用类包装类(Wrapper)针对八种基本数据类型定义相应的引用类型——包装类,有了类的特点,就可以调用类中的方法基本数据类型包装类booleanBooleancharCharacterbyteByteshortShortintIntegerlongLongfloatFloatdouble......
  • 2022-04-27:用go语言重写ffmpeg的remuxing.c示例。
    2022-04-27:用go语言重写ffmpeg的remuxing.c示例。答案2022-04-27:ffmpeg的remuxing.c是一个用于将多媒体文件从一种容器格式转换为另一种容器格式的命令行工具。它可以将音频、视频和字幕等元素从源文件中提取出来,并按照用户指定的方式重新封装到目标文件中。在本篇文章中,我将对ffmp......
  • RCU-3——经典(可抢占)RCU代码分析
    基于Linux-5.10一、相关数据结构1.structrcu_statercu_state用于描述RCU全局状态。structrcu_state{structrcu_nodenode[NUM_RCU_NODES];/*Hierarchy.*/structrcu_node*level[RCU_NUM_LVLS+1];/*Hierarchylevels(+1toshutbogusgccwarning)......