美好的一天!我是使用虚幻引擎4 的新手,我对 蓝图 的工作原理有一些疑问。根据我对它的理解,每个蓝图都像 类。我的意思是一个蓝图很像 OOP编程语言中的一个类。
请教育我 - 如果我的假设是正确的或错误的。如果错了,那么也许你可以帮助我以不同的方法/视角实现我想要的东西。我愿意学习并接受建议。
如果在某些时候我的理解是正确的 - 蓝图实际上是个别类 - 如果你能(请)指导去哪里,我会非常感激以及如何实现我想要创建的设计。这是从程序员的角度来看(PHP OOP编程)。原谅这种方法,我只是用PHP来逻辑地表达我希望这个类的工作方式。另外,它是我所知道的唯一的OOP编程。
我想创建一个名为 Items 的类。 class Item {}
这个类将处理所有相关的项目,因此我们必须给它很多属性/变量。 (下面只是一个例子;我再次以PHP为例。)
class Item {
var $id;
var $name;
var $description;
var $type;
var $subType;
var $mesh;
var $materials;
}
3。)我想通过将两个变量作为构造参数来启动此类。 (我们需要 itemID 和 itemType )。这是因为我将使用这两个变量来检索已在数据表中提供的项目数据。我将使用表中的这些数据来填充类属性/变量。 (我不确定我说的是对的。我希望你理解我的观点。)
class Item {
var $id;
var $name;
var $description;
var $type;
var $subType;
var $mesh;
var $materials;
function _construct($cons_itemID, $cons_itemType) {
/*-- Start getting the item Data here based on what item and type provided. Then, push that data into the class properties/variables. We will use individual methods/functions to fill other properties/variables later. --*/
}
}
4。)基本上,通过该设计,我可以轻松地将项目ID传递给类,然后使用指针获取项目的名称,描述,网格,材料等。
示例:
$weapon = new Item('10001','Weapon');
$weaponMesh = $weapon->getMesh();
$armor = new Item('12345','Armor');
$armorName = $armor->getName();
我在使用蓝图时遇到了很多麻烦并实现了这种方法甚至类似的方法。我不是想避免使用C ++,我很乐意学习它,但我现在没有时间自由。
我尝试过很少的事情让它发挥作用:
对所有愿意帮助或回答的人。谢谢!
~Chris
答案 0 :(得分:2)
据我所知,是,我们可以假设每个蓝图都可以被视为类。 (此外,由于UE 4.12(在UE 4.11中,我认为功能被标记为实验性),您可以在项目设置 - > 包装>下检查编译蓝图 em>。这将为每个蓝图创建本地类。)
您可以基于对象(C ++中的 UObject )创建Blueprint或C ++类。然后,您可以指定所有属性(或UE编辑器术语中的变量)。在BP中你有一个小优势:你可以将一些属性标记为在spawn上可见(它们必须是公共和可见的)。因此,在创建该类的新实例时,可以显式地将值传递给该属性。 在BP Construct 事件中,正确填充了这些属性,因此您可以根据给定的 ID 和 Type 设置其他属性值。
在C ++类中,具有与 FObjectInitializer 不同的参数是不可能的,因此在执行构造函数时,您没有及时的值。但是实现相同的功能并不是那么难,你可以在这里找到例子:https://answers.unrealengine.com/questions/156055/passing-arguments-to-constructors-in-ue4.html。
关于您尝试过的列表的一些内容: