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

UE5 使用SlateViewer模版创建窗口(记录)

复制源码中Engine\Source\SlateViewer文件夹后重命名AMySlateView,替换代码中的SlateViewer为AMySlateView,执行GenerateProjectFiles.bat更新源码,创建AMyCustomSlate的c++类

#pragma once

#include "CoreMinimal.h"
#include "Widgets/Docking/SDockTab.h"

int MyRunSlateView(const TCHAR* Commandline);

TSharedRef<SDockTab> SpawnBrowserTab(const FSpawnTabArgs& Args);

 


#include "AMyCustomSlate.h"

#include "ISourceCodeAccessModule.h"
#include "LaunchEngineLoop.h"
#include "StandaloneRenderer.h"

int MyRunSlateView(const TCHAR* Commandline)
{
	FTaskTagScope TaskTagScope(ETaskTag::EGameThread);

	GEngineLoop.PreInit(Commandline);

	ProcessNewlyLoadedUObjects();

	FModuleManager::Get().StartProcessingNewlyLoadedObjects();

	FSlateApplication::InitializeAsStandaloneApplication(GetStandardStandaloneRenderer());
	
	FSlateApplication::InitHighDPI(true);

	ISourceCodeAccessModule& SourceCodeAccessModule = FModuleManager::LoadModuleChecked<ISourceCodeAccessModule>( FName( "SourceCodeAccess" ) );

	IModuleInterface& VisualStudioSourceCodeAccessModule = FModuleManager::LoadModuleChecked<IModuleInterface>( FName( "VisualStudioSourceCodeAccess" ) );
	SourceCodeAccessModule.SetAccessor(FName("VisualStudioSourceCodeAccess"));
	
	TSharedRef<SWindow> BrowserWindowWidget =
				SNew(SWindow)
				.Title(FText::FromString("this is test"))
				.ClientSize(FVector2D(800,600))
				.AutoCenter(EAutoCenter::None)
				.HasCloseButton(true)
				.LayoutBorder(FMargin(0));

	FSlateApplication::Get().AddWindow(BrowserWindowWidget);
	
	// 主循环
	while (!IsEngineExitRequested())
	{
		FTaskGraphInterface::Get().ProcessThreadUntilIdle(ENamedThreads::GameThread);
		FStats::AdvanceFrame(false);
		FTSTicker::GetCoreTicker().Tick(FApp::GetDeltaTime());
		FSlateApplication::Get().PumpMessages();
		FSlateApplication::Get().Tick();
		FPlatformProcess::Sleep(0.01);
		GFrameCounter++;
	}

	// 清理和退出
	FSlateApplication::Shutdown();
	FModuleManager::Get().UnloadModulesAtShutdown();

	GEngineLoop.AppPreExit();
	GEngineLoop.AppExit();

	return 0;
}

在SlateViewerMainWindows.cpp中调用AMyCustomSlate中的MyRunSlateView函数

// Copyright Epic Games, Inc. All Rights Reserved.


#include "AMyCustomSlate.h"
#include "SlateViewerApp.h"
#include "Windows/WindowsHWrapper.h"


/**
 * WinMain, called when the application is started
 */
int WINAPI WinMain( _In_ HINSTANCE hInInstance, _In_opt_ HINSTANCE hPrevInstance, _In_ LPSTR, _In_ int nCmdShow )
{
	// do the slate viewer thing
	//RunSlateViewer(GetCommandLineW());

	MyRunSlateView(GetCommandLineW());

	return 0;
}


http://www.kler.cn/a/411397.html

相关文章:

  • visionpro实践项目(一)
  • Day 26
  • 自制Windows系统(十)
  • css效果
  • 最新SQL Server 2022保姆级安装教程【附安装包】
  • 网络爬虫——分布式爬虫架构
  • 人体特定吸收率 (SAR) 分布建模
  • JavaWeb——Maven高级
  • 代码美学:MATLAB制作渐变色
  • 区块链知识体系
  • 人工智能与人类:共创未来的新篇章
  • snmp MIB详解
  • UE5 实现组合键触发事件的方法
  • 滑动窗口篇——如行云流水般的高效解法与智能之道(3)
  • 第二十二周周报:Stable Diffusion
  • box-im学习
  • 跨部门文件共享安全:平衡协作与风险的关键策略
  • vscode添加环境变量(mujoco)
  • 2024.9 Pruning Cycles in UMLS Metathesaurus: A NeuroSymbolic AI Approach
  • C++设计模式(单例模式)
  • Ubuntu下Docker容器java服务往mysql插入中文数据乱码
  • UE5材质混合模式
  • mysql深度分页优化
  • FPGA中的电平标准
  • nodejs第三方库sharp对图片的操作生成新图片、压缩、添加文字水印及图片水印等
  • 第二十二课 Vue中的组件切换