UE4纯C++与Slate开发沙盒游戏:3.使用WidgetStyle设置样式

目录

一、目的、参考:

1、UE4纯C++与Slate开发沙盒游戏:1.项目介绍与资源获取

二、视频内容:

1、老师做好的工程代码注释很多,教程里面没有写注释;但是我仔细看了老师的工程,里面没有很多的注释,所以最好还是自己写一下注释

2、创建Slate Widget Style:Slate控件样式,这样可以创建各种样式:创建的Button添加样式、比如说图片

3、SlAiStyle.h:获取WidgetStyle的样式

3、SlAiStyle.cpp:获取WidgetStyle的样式

4、SlAiCourse.h\SlAiCourse.cpp

看到14:39,从这里开始,我开始和老师后面编写代码,笔记就不开始记录代码部分了(也是到了这里,我才弄好自己的工程,开始一点点操作了),因为和老师后面练习效果好一点。

看到2050

三、问题:

1、看到20:50视频时候,自己编写的一直提示“此声明中没有存储类或类型说明符”,


一、目的、参考:

1、UE4纯C++与Slate开发沙盒游戏:1.项目介绍与资源获取

https://blog.csdn.net/qq_40544338/article/details/105497594#8%E3%80%81UE4%E7%9A%84Gameplay%E6%A1%86%E6%9E%B6

①总结:good:介绍了写这个系列博客的目的、参考,不了解的可以查看一下

二、视频内容:

1、老师做好的工程代码注释很多,教程里面没有写注释;但是我仔细看了老师的工程,里面没有很多的注释,所以最好还是自己写一下注释

2、创建Slate Widget Style:Slate控件样式,这样可以创建各种样式:创建的Button添加样式、比如说图片

①创建C++类:Slate Widget Style类型:SlAiMenuStyle:

 ②创建C++类:空的:SlAiStyle:通过这个类获取WidgetStyle

 

 

3、SlAiStyle.h:获取WidgetStyle的样式

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "SlateBasics.h"

/**
 * 
 */
class SLAICOURSE_API SlAiStyle
{
public :
	//	初始化 类似单例:
	static void Initialze();	//	初始化 类似单例:
	static FName GetStyleSetName();	//得到类型的名字
	static void ShutDown();		//关闭
	static const ISlateStyle& Get();//得到Slate的类型
	 
private:

	static TSharedRef<class FSlateStyleSet>Create();//注册类的样式的

	static TSharedPtr<FSlateStyleSet>SlAiStyleInstance;//SlateStyle实例
};

3、SlAiStyle.cpp:获取WidgetStyle的样式

// Fill out your copyright notice in the Description page of Project Settings.

#include "SlAiStyle.h"
#include "SlateGameResources.h"

//单例模式,不能写在构造函数中,否则会报为空
TSharedPtr<FSlateStyleSet>SlAiStyle::SlAiStyleInstance = NULL;

//	初始化 类似单例:
void SlAiStyle::Initialze()
{
	//如果不存在就创建,并且注册这个单例,底层是这样的,如果想研究去看看源码
	if (!SlAiStyleInstance.IsValid())
	{
		SlAiStyleInstance = Create();
		FSlateStyleRegistry::RegisterSlateStyle(*SlAiStyleInstance);
	}
}

//得到类型的名字
FName SlAiStyle::GetStyleSetName()
{
	//FName:系统需要的定的名字; 
	//FString:最耗资源的,对字符串编辑
	//FText:本地化,如果要本地化需要使用这个。
	static FName StyleSetName(TEXT("SlAiStyle"));
	return StyleSetName;
}

//关闭:取消注册这个单例、确保是唯一的、将单例释放
void SlAiStyle::ShutDown()
{
	FSlateStyleRegistry::UnRegisterSlateStyle(*SlAiStyleInstance);
	ensure(SlAiStyleInstance.IsUnique());
	SlAiStyleInstance.Reset();
}

//找到这个注册的单例
const ISlateStyle & SlAiStyle::Get()
{
	// TODO: 在此处插入 return 语句
	return *SlAiStyleInstance;
}

//作者修改为了TSharedRef:进行查找,在制定的路径下面查找TSharedRef<FSlatStyleSet>
TSharedRef<class FSlateStyleSet> SlAiStyle::Create()
{
	TSharedRef<FSlateStyleSet>StyleRef = FSlateGameResources::New(SlAiStyle::GetStyleSetName(), "/Game/UI/Style","/Game/UI/Style");

	return StyleRef;
}

4、SlAiCourse.h\SlAiCourse.cpp

看到14:39,从这里开始,我开始和老师后面编写代码,笔记就不开始记录代码部分了(也是到了这里,我才弄好自己的工程,开始一点点操作了),因为和老师后面练习效果好一点。

看到2050

三、问题:

1、看到20:50视频时候,自己编写的一直提示“此声明中没有存储类或类型说明符”,

①解决方法:发现检测好几遍没有问题,然后将VS关闭、打开,在关闭打开,然后运行多次,才终于显示出错误的地方,之前一直不提示这里出现了问题。然后将错误的单词改写就好了

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值