2017-03-23 00:04:59 shidya 阅读数 217
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴
  1. 全模手部IK Fabrik在手部,人物移动时会出现手部抖动。

  2. 粒子系统里Collision属性,可以对已经放置在场景中的mesh data和collision box产生阻挡。对动态胜场的mesh可以产生碰撞,对动态生成的collision box碰撞盒子无法产生碰撞。

2018-12-08 17:37:51 netyeaxi 阅读数 387
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴

      在开发中经常要用到第三方库,下面将使用第三方库的方法总结一下。

一、动态库的添加

UnrealEngine的wiki中提供了一种方案:
Linking Dlls:https://wiki.unrealengine.com/Linking_Dlls

dll中的代码:
https://github.com/XenoEgger/CreateAndLinkDLLTutSol/blob/master/CreateAndLinkDLLTut/CreateAndLinkDLLFile.h
https://github.com/XenoEgger/CreateAndLinkDLLTutSol/blob/master/CreateAndLinkDLLTut/CreateAndLinkDLLFile.cpp

调用dll的代码:
https://github.com/XenoEgger/CreateAndLinkDLLProj/blob/master/Source/CreateAndLinkDLLProj/Public/CreateAndLinkDLLTutBFL.h
https://github.com/XenoEgger/CreateAndLinkDLLProj/blob/master/Source/CreateAndLinkDLLProj/Private/CreateAndLinkDLLTutBFL.cpp

        上述方案主要是使用如下两个函数,先获取dll文件句柄,再通过dll句柄获取方法指针,最后通过获取的方法指针调用dll中的方法:

FPlatformProcess::GetDllHandle(dllFilePath);
FPlatformProcess::GetDllExport(dllHandle, procName);

        如果只需要调用dll的方法的话,采用上述方案是没有问题的,但如果调用dll中的类的话,上述方案就不合适了。下面就来说说如何调用dll中的类:

比如,将crypto++7和log4cplus-2.0.2编译成dll后生成如下文件:

crypto++7.lib
crypto++7.dll
log4cplus-2.0.2.lib
log4cplus-2.0.2.dll

crypto++7.lib和log4cplus-2.0.2.lib分别为crypto++7和log4cplus-2.0.2的导出库。

将它们放入工程目录下/Plugins/ThirdParty/Debug中,在*.Build.cs文件中添加如下代码:

Definitions.AddRange(new string[] {"CRYPTOPP_IMPORTS", "LOG4CPLUS_BUILD_DLL" });

// 第三方库debug目录
string ThirdPartyPath = Path.Combine(PluginsPath, "ThirdParty/Debug");
PublicLibraryPaths.Add(ThirdPartyPath);

// 添加.lib文件
PublicAdditionalLibraries.Add("crypto++7.lib");
PublicAdditionalLibraries.Add("log4cplus-2.0.2.lib");

PublicIncludePaths.AddRange(new string[] {
    Path.Combine(PluginsPath, "cryptopp-CRYPTOPP_7_0_0/include"),
    Path.Combine(PluginsPath, "log4cplus-2.0.2/include"),
});

其中,CRYPTOPP_IMPORTS和LOG4CPLUS_BUILD_DLL分别为crypto++7和log4cplus-2.0.2的导入参数;PublicAdditionalLibraries中分别添加了crypto++7和log4cplus-2.0.2的导出库.lib文件;PublicIncludePaths分别添加了crypto++7和log4cplus-2.0.2的头文件路径。

同时crypto++7.dll和log4cplus-2.0.2.dll必须放到Binaries/Win64目录下。

二、静态库的添加

方式跟动态库类似,比如,将asio-1.11.0和msgpack-c-cpp-3.1.1编译成静态库后生成如下文件:

asio-1.11.0.lib
msgpack-c-cpp-3.1.1.lib

asio-1.11.0.lib和msgpack-c-cpp-3.1.1.lib都是静态库,不是导出库。

将它们放入工程目录下/Plugins/ThirdParty/Debug中,在*.Build.cs文件中添加如下代码:

Definitions.AddRange(new string[] { "ASIO_STANDALONE", "MSGPACK_USE_CPP03" });

// 第三方库debug目录
string ThirdPartyPath = Path.Combine(PluginsPath, "ThirdParty/Debug");
PublicLibraryPaths.Add(ThirdPartyPath);

// 添加.lib文件
PublicAdditionalLibraries.Add("asio-1.11.0.lib");
PublicAdditionalLibraries.Add("msgpack-c-cpp-3.1.1.lib");

PublicIncludePaths.AddRange(new string[] {
	Path.Combine(PluginsPath, "asio-1.11.0/include"),
	Path.Combine(PluginsPath, "msgpack-c-cpp-3.1.1/include"),
});

其中,ASIO_STANDALONE和MSGPACK_USE_CPP03分别为asio-1.11.0和msgpack-c-cpp-3.1.1在编译时要用到的参数;PublicAdditionalLibraries中分别添加了asio-1.11.0和msgpack-c-cpp-3.1.1的静态库.lib文件;PublicIncludePaths分别添加了asio-1.11.0和msgpack-c-cpp-3.1.1的头文件路径。

 

参考文档:

Linking Dlls
Linking Static Libraries Using The Build System
How to Link External C Libraries .dll .lib With Your Project & Package With Game, Fast And Easy

 

2019-11-27 11:50:55 t163361 阅读数 26
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴

原文地址:https://blog.csdn.net/t163361/article/details/103273128

官方视频教程
中文文档地址
Unity开发者学习通道
启动器下载
如何下载编译引擎源码
官方源码地址
里面包含Unreal的源码等开源库
想要下载Unreal源码,需要申请成为Epic Games成员

2015-11-14 13:03:01 xi_niuniu 阅读数 3152
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴

Unreal Engine 4 蓝图脚本学习,根据《Blueprints Visual Scripting for Unreal Engine》学习整理


默认情况下,actor的Transform组件中 移动性属性为“static”,  就是在游戏运行时,actor是不可进行移动和操作的。所以为了实现对象
在游戏中可移动的效果需要把这一属性修改为 "可移动"




为了能够改变脚本以后所附加到的对象同样为可移动的,需要打开蓝图编辑器进行一些修改






为了使物体在游戏世界中能够移动,我们需要知道以下信息

•  Where the cylinder currently is 圆柱体在什么位置
•  What direction it is supposed to move in 想要移动的方向是什么
•  How fast it is supposed to move in that direction 在那个方向上移动的速度是多少

创建速度变量和方向变量

Speed 为float类型变量

Direction为Vector类型变量


速度设置 为200.0f;



移动方向设置为 y = -10.0f;





Normalizing is a common procedure in vector math that ensures that
the vector is converted to a length of one unit, which will make it compatible with
the rest of our calculations

标准化向量(单位化向量)就是将向量值转化到一个单位长度(向量的模为一)。以便在后序程序运算中相兼容



速度值乘以一个时间值,所以选择 float*float    时间值类型也为float


将StaticMeshComponent组件拖拽到事件图表中  以获取圆柱体当前的位置



GetWorldDeltaSeconds: 获取相邻两帧之间的间隔时间。 这个数值受游戏运行所在的机器性能影响的,性能高的机器时间间隔就较小,反之则较大。为了能够
在不同性能的计算机上表现出相同的移动速度,所以会把速度值乘以DeltaSeconds。



Transform属性中包含对象的 位置、  旋转 和 缩放的信息。 能过GetWorldTransform可以获得当前对象的Transform信息

BreakTransform 可以提取Transform中的不同部分
MakeTransform根据Location、Rotation和Scale "合成" 一个新的Transform


事件Tick每一帧都会触发

SetActorTransform 根据传入的Transform值设置Actor的Transform


这时运行游戏,圆柱体只会朝着一个方向移动。
为了实现圆柱体在游戏中来回移动,向事件图表中添加两个新的Direction 变量 ,选择设置并分别设置y值为10.0  和 -10.0


Delay会根据Duration设置的秒数循环执行
FlipFlop会执行 A 和 B所连接的Node 中的一个,默认先执行A。

播放游戏观察事件图表中数据流的走向


圆柱体在游戏中来回移动

现在通过之前创建的蓝图脚本可以创建更多且有相同属性的游戏对象











2015-12-14 21:14:20 shangguanwaner 阅读数 1421
  • 从这里开始虚幻4-Editor介绍 v4.18

    本课程系列取名英译系列,是录制人员参考国外英文原版经典教程,结合中国人的习惯录制而成。希望能够给大家以帮助。从这里开始虚幻4系列教程,是Unreal的官方发布的入门教学,非常经典,是学习Unreal的佳入口。

    2377 人正在学习 去看看 杨石兴

Unreal Engine 4添加自定义Settings到项目设置

在开发的过程中,很多时候需要在项目中应用各种各样的设置。有些人会自己实现一套,其实没必要那么麻烦,虚幻4专门为开发者提供了一套配置系统,方便又省事。效果如下:
这里写图片描述

可以看到Settings是和编辑器的配置是并列的,同样是在项目设置窗口中。
下面将一步一步描述如何具体实现这一功能。
首先创建类MySettings,这个类继承自UObject,代码如下:
MySettings.h

UCLASS(config=MySettings)
class SETTINGSTEST_API UMySettings : public UObject
{
    GENERATED_BODY()

public:
    UMySettings(const FObjectInitializer& obj);

    UPROPERTY(Config, EditAnywhere, Category = Settings)
    int32 SomeIntProperty;

    UPROPERTY(Config, EditAnywhere, Category = Settings)
        bool SomeBoolProperty;
};

MySettings.cpp

UMySettings::UMySettings(const FObjectInitializer& obj)
{
    SomeIntProperty = 0;
    SomeBoolProperty = true;
}

作为演示,UMySettings只包装了两个简单的变量,读者可以按照需要扩展更复杂的配置变量。
接下来,需要在合适的地方注册这个配置对象。

#include "ISettingsModule.h"
//省略。。。
#define LOCTEXT_NAMESPACE "MySettings"

if (ISettingsModule* SettingsModule = FModuleManager::GetModulePtr<ISettingsModule>("Settings"))
{
    SettingsModule->RegisterSettings("Project", "Plugins", "MySettings",
        LOCTEXT("RuntimeSettingsName", "My Settings Page"),
        LOCTEXT("RuntimeSettingsDescription", "Configure my settings"),
        GetMutableDefault<UMySettings>()
    );
}

代码执行后,可以在项目的Saved/Config/Windows下面发现创建了一个MySettings.ini的配置文件,这里保存的就是咱们自定义的配置信息。

unreal4 源码引言

阅读数 256

unreal

阅读数 239

Unreal里的动画

阅读数 1623

没有更多推荐了,返回首页