3

无法在Unreal Engine中使用C++创建Struct

 1 year ago
source link: https://blog.uwa4d.com/archives/TechSharing_316.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

1)无法在Unreal Engine中使用C++创建Struct
​2)Unreal中,如何在一个视口内显示多个摄像机视口
3)如何能和UGUI里面的图片做个动画一直旋转,实现Loading效果
4)UIToolkit中ListView如何去除滑动条


这是第316篇UWA技术知识分享的推送。今天我们继续为大家精选了若干和开发、优化相关的问题,建议阅读时间10分钟,认真读完必有收获。

UWA 问答社区:answer.uwa4d.com
UWA QQ群2:793972859(原群已满员)

Scripting

Q:当我试图在Unreal Engine中使用C++创建Struct,我得到下述错误:
Error:当编译struct ‘MapZone’时,试图去掉前缀会导致空的名字,你是不是漏掉了前缀?

我的代码如下:

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

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameModeBase.h"
#include "Escape_from_CaelumGameMode.generated.h"

//If you want this to appear in BP, make sure to use this instead //USTRUCT(BlueprintType)
USTRUCT() struct MapZone
{
    GENERATED_BODY()

        UPROPERTY()
        int32 SampleInt32;

    UPROPERTY()
        AActor* TargetActor;
};


UCLASS(minimalapi)
class AEscape_from_CaelumGameMode : public AGameModeBase
{
    GENERATED_BODY()

public:
    AEscape_from_CaelumGameMode();

    UPROPERTY(BlueprintReadWrite, EditAnywhere, Category="EFC|Zones")
    TArray<MapZone> MapZones;
};

A:每一个注册在Unreal反射系统中的Struct必须有前缀F,所以你的C++类型的名字应该为FmapZone。就像Actors需要前缀A,其他UObjects必须有前缀U。
Unreal Engine:It`s a way of life.

感谢MooLi@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/638617160a02a86d746495a8


Rendering

Q:在Unreal中,我可以在一个视口(viewport)内显示多个摄像机视口(camera viewport)吗?

我想在一个显示器中并排显示两个或者更多的电影摄像机所呈现的画面,我可以通过Scene Capture 2D(2D场景截图)显示,但是我不知道怎么通过电影摄像机做到。

A:Unreal已经内置了对分屏多人游戏的支持。

1.png

感谢MooLi@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/6388ad9f0a02a86d74673ad1


UIToolkit

Q:如何能和UGUI里面的图片做个动画一直旋转,实现Loading效果呢?能用UIToolkit里面的Transition Animations做动画效果吗?如果改变旋转角度需要每帧里面去控制旋转角度?

A:UIToolkit的动画系统无法实现循环动画,并不知道要加载多久提前算不出来要转多少圈。

在Update里这样写就行了也很简单:

private void Update()
{
    visualElement.transform.rotation *= Quaternion.Euler(0, 0, 1);
}

感谢芝麻青豆角@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/638db7400a02a86d746baf19


UIToolkit

Q:UIToolkit中ListView怎么去除那个滑动条呢?只要在手机端用手指滑动就行了。怎么自定义滑动条的图片背景图和滑轮这些?Image如何动态加载图片呢?开发过程中可能很多时候都要动态刷新图片。

A:关于ListView,在UIToolkit内部使用了ScrollView组件,因为内置的组件所以无法对它子节点进行修改,如果需要隐藏或者修改样式可以使用USS通过NameID或者找子对象的方法找它,在USS里面配置隐藏就可以了。

这样就可以运行时修改Sprite了:

button.Q(“image”).style.backgroundlmage= new StyleBackground(Resources.Load(“1”));

感谢芝麻青豆角@UWA问答社区提供了回答,欢迎大家转至社区交流:
https://answer.uwa4d.com/question/638db7e50a02a86d746bafea

封面图来源于网络


今天的分享就到这里。当然,生有涯而知无涯。在漫漫的开发周期中,您看到的这些问题也许都只是冰山一角,我们早已在UWA问答网站上准备了更多的技术话题等你一起来探索和分享。欢迎热爱进步的你加入,也许你的方法恰能解别人的燃眉之急;而他山之“石”,也能攻你之“玉”。

官网:www.uwa4d.com
官方技术博客:blog.uwa4d.com
官方问答社区:answer.uwa4d.com
UWA学堂:edu.uwa4d.com
官方技术QQ群:793972859(原群已满员)


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK