‫欢迎回来
‫在本视频中, 我们将区分特定蓝本类的实例与默认蓝本,
‫默认蓝本是适用于所有实例的蓝本｡
‫我们还将了解如何在蓝图中为特定的C++变量分配､ 读取或写入访问权限｡
‫那么我们开始吧｡
‫我们现在准备开始向Blueprint公开我们的一些组件｡
‫这里有我们的组件, 我们可以看到, 如果单击每个组件, 我们的详细信息面板将完全为空｡
‫所以我们需要学习如何向蓝图公开某些属性, 我们通过使用U属性宏来实现这一点｡
‫因此, 让我们跳回到VS代码, 看看You属性宏｡
‫这是一个特殊的宏｡
‫这是Unreal Engine独有的, 它有一组括号,
‫因为它可以输入参数, 为了展示如何以某种方式公开, 我们只需要创建一些一次性变量,
‫完成后可以删除.
‫我们要用这些来看看曝光度是怎么工作的, 这样我们就可以得到一些整数｡
‫让我们创建一个int32, 我把它叫做在任何地方都可见的｡
‫这里我把它初始化为一个值, 比如12｡
‫现在, 为了将其公开给反射系统, 我们需要一个新的属性宏｡
‫这只是一个普通的整型变量｡
‫它不是这样的组件, 因此不会显示在“组件”选项卡中｡
‫请记住, 在蓝图中, 我们有这个组件部分, 这里显示了所有组件,
‫但也会显示所有常规变量｡
‫例如, 如果我们单击BP Pond､ Tank Self,
‫我们将在此处看到所有其他非组件变量｡
‫回到vs代码, 让我们决定如何公开visible｡
‫好了, 我将向您们介绍一些属性关键字
‫这些选项可以放在U的括号里｡
‫属性宏｡
‫对于这个, 我们将添加visible anywhere｡
‫现在让我们继续编译它｡
‫好吧, 我会的
‫我们已经编译好了, 让我们跳回到编辑器｡
‫在BP Pond Tank中, 我在这里自行选择了BP Pond Tank,
‫我可以在详细信息面板中搜索visible, 这里是我的visible anywhere int｡ 请注意, 由于我们使用Camel
‫Case命名, 蓝图在每个单词之间放置了空格｡ 检查一下, 我们可以看到它的值为12,
‫并且显示为灰色｡
‫我们实际上根本无法编辑此内容｡
‫这就是随处可见的意思｡
‫这意味着它是可见的, 但我们无法编辑此属性｡
‫好的, 让我们继续创建另一个INT 32｡
‫我把这个叫做edit anywhere int｡
‫我给予它一个值, 比如22, 它会有自己的U属性宏, 而不是在任何地方都是可见的,
‫我给它一个关键字.
‫随处编辑｡
‫让我们继续编译它, 然后回到编辑器中, 我将搜索edit anywhere,
‫这是我的edit anywhere, 您可以看到它的值为22, 只是它不再变灰｡
‫我可以选择它, 我可以改变它｡
‫它是可编辑的｡
‫这就是随处编辑的意思｡
‫这意味着我们可以改变它｡
‫因此, 即使我们在C++中将其初始化为22, 我们也可以在蓝图中覆盖该值, 并为其给予新值｡
‫现在, 您已经了解了“随处可见”和“随处编辑”, 但还有比这两个关键字更多的关键字｡
‫例如, 我们创建一个新的int 32, 并将其命名为一个可见实例, 并将其初始化为11｡
‫现在它将得到它的you属性宏, 我给予它的关键字是visible instance only.
‫让我们编译它, 然后回到蓝图的细节面板中, 我现在要搜索visible, 注意, 我们可以看到visible
‫anywhere, int, 但是我们的新变量在哪里？
‫我们称之为仅可见实例｡
‫INT仅查看可见实例｡
‫我们在这里看不到, 但是看看这个｡
‫我要把我们的BP水池拖到外面的世界里｡
‫而我们在外面的世界里可以看到班轮｡
‫突然间, 我们在世界上有了一个BP池塘｡
‫现在, 选择了这个, 我可以进入详细信息面板, 搜索visible, 现在, 看看这个, 现在,
‫我们可以看到visible anywhere int和visible instance only int｡
‫所以我们怎么能在这里看到它, 但是当我们看实际的蓝图本身时, 我们看不到它｡
‫我想做个区分
‫您可以看到, 当我们在内容浏览器中显示蓝图时, 我们可以双击它,
‫打开它并查看其属性｡
‫什么？你说什么？
‫我们在这里看到的是默认蓝图｡
‫其中包含蓝图的所有默认信息｡
‫但是, 只要我将一个实例拖到级别中, 我们就有了一个实例｡
‫所以这个世界上存在的BP-—水箱是BP池塘水箱的一个例子｡
‫事实上, 我们可以拖出多个实例, 而世界上存在的每个实例都是BP水池的实例｡
‫这与默认蓝本不同｡
‫这里有一个小图表, 供大家参考, 我们会在学习更多说明符的时候, 把这个图表填得更满｡
‫到目前为止, 我们只看到了可见的任何地方, 你会看到在默认值和实例列下｡
‫它位于标题为“只读”的行中｡
‫所以你可以从这个图中看到, 一个可见的地方你的属性只会是可见的｡
‫它将不可编辑, 但在默认值和实例中均可见｡
‫而visible instance only只对该实例具有只读访问权限｡
‫您实际上无法在默认蓝图上看到它｡
‫然后我们学习了编辑任意位置, 它允许我们实际编辑默认值和实例上的属性｡
‫这就是为什么它同时存在于默认值和实例列中的原因｡
‫所以作为一个挑战, 我希望你添加一个变量到基本池塘类｡
‫现在把它放在public部分, 你要做的就是决定你想添加什么类型的变量, 它可以是任何类型,
‫但不能是基本类型, 比如整型或浮点型.
‫你甚至可以把它变成一个F向量或者一个F字符串, 如果你想用一个默认值初始化它, 就像我们的另一端30个二进制数｡
‫这个变量可以是你想要的任何变量｡
‫你可以设置速度变量或耐力变量｡
‫你在这里有一些自由｡
‫现在, 一旦你创建了这个变量, 决定你想要它的访问级别, 然后给予它一个你的属性宏,
‫并在这里添加正确的指定｡
‫现在决定是只在实例上显示还是在默认值上显示, 或者是在任何地方显示或编辑,
‫使用我们到目前为止学到的说明符之一, 并为该变量指定正确的值,
‫然后暂停视频并立即生成该变量｡
‫好吧, 我会的
‫所以我将继续创建一个变量｡
‫现在, 如果你做了一些完全不同的东西也没关系｡
‫这只是练习｡
‫我将创建一个浮点数, 我将调用这个速度, 我将初始化速度为400 F｡
‫我想我希望这个速度变量在实例和默认情况下都是可编辑的｡
‫我将给予它一个U属性宏, 在任意位置进行编辑.
‫所以我将继续编译这个｡
‫回到编辑器中, 我可以选择一个基本的坦克实例｡
‫在这里的详细信息面板中, 我可以看到我的速度变量, 当然我可以在这里编辑它｡
‫如果我打开—-tank, 这是我的速度变量, 它被设置为400, 并且是可编辑的｡
‫总之, 我们已经了解了实例与特定蓝图类的默认值之间的区别｡
‫我们还学习了一些新的属性说明符, 如Visible Anywhere､ Visible､ instance only和edit anywhere｡
‫在下一个视频中, 我们将继续学习如何使用这些新的属性说明符来控制对Blueprint中C++变量的访问｡
‫我很快就会见到你的｡