Lost Gate

这个世界实在太无趣了… 既然如此,那就再创造一个世界如何?

UE4 学习手记(1)


一直以来都想尝试下全视角ACT游戏。

考虑到画面,运行效率,以及探索新知识。这次决定使用虚幻4引擎。

这是我第N次冲动了,记得10多年前就很想复刻魔兽世界,但无奈as3效率太低,只能作罢。 这次学习目标是塞尔达传说:荒野之息。 它有着非常丰富的ACT、场景互动、开放世界、演出效果等要素,是标杆般的存在,任天堂真的是世界主宰!

万事开头难,UE4和Unity,虽然都是U字辈,但区别太大了。必须得学习一段时间的基础,才可以动手。

以下是初探UE4几天后,得出的感想

  1. UE4的 IDE,在部分功能层面远远强于Unity,比如美术资源相关的各个环节,几乎都有图形化的编辑器。在IDE主体布局上,与Unity差不多。
  2. UE4的IDE,在一些基础功能上却“落后”得吓人,比如在IDE 里创建C++类很简单,但是移除一个类?对不起,请关闭VS和UE4编辑器,打开文件管理器删除.h和.cpp ,然后删除项目的Binaries文件夹,在打开UE4编译一次,再重构VS项目。 What?! 当我百度了这个答案的时候,我以为这是搞笑。随后去官网看了官方人员的答复,我才逐渐接受了这个现实:这不是玩笑…
  3. UE4的蓝图非常强大,图形编程就能完成一个游戏!.. 然而,我还是崇尚pure code 项目,毕竟代码表达逻辑的能力要灵活且效率高得多。不得不提,代码与蓝图的结合上,UE4存在很多难以理解的BUG(暂且叫BUG吧,我不相信这是设计如此……),例如在一个Actor 里有两个component,A和B。 B是A的子项。 以这个Actor创建一个蓝图类。 此时蓝图显示正确,B在A的节点里。 此时修改Actor C++,把B和A平行(即取消B为A的子项)。编译后,发现蓝图结构也变化了,是正确的。但是此时再修改C++,把AB关系再恢复为B是A的子项,编译。 这时候蓝图仍然维持在AB是平行关系! 这时候去play in Edior,运行结果是错的。而当你使用standalone模式(单独生成一个EXE)去运行,发现是这个模式是正确。说明IDE内的蓝图是错误的。只有重新启动Editor,蓝图才会变得正确。 这个例子只是众多“修改不生效”的情况之一 … 希望是我不够了解UE4,不然这可够吐血的。一个开发环境如果不能可靠的反应结果,那多么可怕! 现在我的解决办法是:使用Standalone模式进行预览,同时加-Log参数,打印Log。虽然启动比PIE慢一点,但绝对可靠。此外,如果使用Pure Code,也可以避免。
  4. UE4的C++和正经的C++不太一样,更像是一个包装后的高级语言,然而还是带了C++的一些繁琐操作,比如头文件,include什么的。习惯了C#的简洁高效以后,还真是需要点时间适应。
  5. UE4的开发思想与Unity基本类似,都是基于DisplayList。但是基类明显多了非常多,一些轮子不用再自己造。从 Cocos2dx,Unity,UE4,感觉内置的轮子越来越多了。其实个人还是更喜欢Unity这种程度,功能简洁,灵活,方便拓展。当然了,UE4也可以当Unity用,官方DOC里有一篇很接地气的指南,告诉Unity用户怎么把经验转移到UE4。
  6. UE4的渲染画面确实更“高级”,这个必须承认。 至于效率,还没有做大型DEMO,暂时无法验证。

Email
57085445@qq.com

讨论群
LostGate同人游戏 184379459
魔力宝贝官方手游群 540221885