[Music] [音乐]大家好，欢迎回来
hey everyone and welcome back for [音乐]大家好，欢迎回来
another tutorial in my ue4 tutorial 本集的我的ue4教程系列中的另一个教程
series in this episode I'm gonna go 本集的我的ue4教程系列中的另一个教程
through and add one extra thing to our 并在我们的库存系统系列中添加另一件事，我知道我说过
inventory system series I know I said we 并在我们的库存系统系列中添加另一件事，我知道我说过
were done but there's one thing we could 已经完成，但是我们可以添加一件事，这将使这件事变得很多
add that would make this thing a lot 已经完成，但是我们可以添加一件事，这将使这件事变得很多
smoother and fulfill a lot requests up 更加平滑并再次满足很多要求，这就是增加了一个工具提示
again and that is adding a tooltip 更加平滑并再次满足很多要求，这就是增加了一个工具提示
so we mouse over you a slot he'll show 所以我们将鼠标悬停在一个插槽上，他会在该插槽中显示该项目的详细信息，所以
details of the item in that slot okay so 所以我们将鼠标悬停在一个插槽上，他会在该插槽中显示该项目的详细信息，所以
let's go through that and finish this 让我们经历一下并结束本系列，所以我们需要做的第一件事
series off so the first thing we need to 让我们经历一下并结束本系列，所以我们需要做的第一件事
do is create the widget for what our 要做的就是创建我们的工具提示看起来像是好的小部件，所以我要
tooltip will look like okay so I'm gonna 要做的就是创建我们的工具提示看起来像是好的小部件，所以我要
go into my inventory UI folder and I'm 进入我的库存UI文件夹，我将制作一个新的小部件蓝图，
gonna make a new widget blueprint and 进入我的库存UI文件夹，我将制作一个新的小部件蓝图，
it's gonna be called talked it actually 这将被称为谈论它实际上是保持我们的命名约定是
yes keep our naming convention is the 这将被称为谈论它实际上是保持我们的命名约定是
same on a coal mine inventory tour tip 同样在煤矿库存游览小费上，好吧，我要去游览它
okay so I'm gonna tour towards it we 同样在煤矿库存游览小费上，好吧，我要去游览它
don't want our cameras panel we want to 不想我们的相机面板，我们想要摆脱它，因为我们不想
get rid of that as we don't want 不想我们的相机面板，我们想要摆脱它，因为我们不想
absolute now we're going to attach it to 绝对现在，我们将其以现有方式附加到HUD，因此
the HUD that's the way existing and so 绝对现在，我们将其以现有方式附加到HUD，因此
what we do need is a size box so size 我们需要的是一个尺寸框，所以尺寸框类似于我们完成其他小部件的方式
box similar to how we done other widgets 我们需要的是一个尺寸框，所以尺寸框类似于我们完成其他小部件的方式
such as our slots and our window this 例如我们的广告位和窗口，我们将进行宽度覆盖
one we're going to do a width override 例如我们的广告位和窗口，我们将进行宽度覆盖
of let's say 300 and our minimum height 比方说300和我们的最小高度尽管我们
though our high overwrite though we're 比方说300和我们的最小高度尽管我们
not going to use we're gonna use this 不用，我们现在要使用这个最小的所需高度
one minimum desired height now the 不用，我们现在要使用这个最小的所需高度
reason why we wouldn't do that is 之所以我们不这样做，是因为我们不知道有多少文字
because we don't know how much text is 之所以我们不这样做，是因为我们不知道有多少文字
going to be displayed in our tool tip so 将显示在我们的工具提示中，因此，如果这样做，这将意味着
if we do this it means it would be a 将显示在我们的工具提示中，因此，如果这样做，这将意味着
minimum of 100 for example and we will 例如最少100个，然后我们将扩展到适合内容的范围
then expand out to fit the content okay 例如最少100个，然后我们将扩展到适合内容的范围
so that's our size box done and so I can 这样我们的尺寸框就完成了，所以我可以在屏幕上看到它
see it on the screen I'm gonna change 这样我们的尺寸框就完成了，所以我可以在屏幕上看到它
from the field screen to desired and 从现场屏幕到所需屏幕，这样我们就可以确定正确的尺寸
that gets us the correct sizing so what 从现场屏幕到所需屏幕，这样我们就可以确定正确的尺寸
now is I want to add a border on to our 现在是我要在尺寸框上添加边框，然后我们要在边框上添加
size box and our border we're going to 现在是我要在尺寸框上添加边框，然后我们要在边框上添加
change the brush color to 将画笔颜色更改为
something like this there we go and then 这样的东西我们去了，然后我想要一个垂直的盒子进入我们的边界，所以
I want a vertical box into our border so 这样的东西我们去了，然后我想要一个垂直的盒子进入我们的边界，所以
a vertical box is basically a panel 垂直框基本上是一个面板，它使我们可以堆叠所有面板
which allows us to stack all of its 垂直框基本上是一个面板，它使我们可以堆叠所有面板
contents vertically now how you lay this 现在垂直放置内容的方式取决于您的选择
out will depend on what if makes you 现在垂直放置内容的方式取决于您的选择
want to show in your tool tip I'm just 想要在您的工具提示中显示我将仅显示项目名称和项目
going to show the item name and the item 想要在您的工具提示中显示我将仅显示项目名称和项目
description okay so I'm just gonna do 描述还可以，如果您想对图片感兴趣，我就去做
that if you want to do like the image 描述还可以，如果您想对图片感兴趣，我就去做
with all that you should be able to 与所有您应该能够弄清楚，如果不给我发电子邮件给我
figure it out if not message me email me 与所有您应该能够弄清楚，如果不给我发电子邮件给我
whatever you like and I'll I'll give you 无论您喜欢什么，我都会给您一些指示，以及走哪条路，
some pointers and which way to go so my 无论您喜欢什么，我都会给您一些指示，以及走哪条路，
vertical box I need two texts so I want 垂直框，我需要两个文本，所以我要先输入文本，再输入一个文本
text first text in and another text in 垂直框，我需要两个文本，所以我要先输入文本，再输入一个文本
so the first text this is gonna be our 所以这第一个文本将成为我们小时项目的标题，所以我想
title of the hour item so I want to 所以这第一个文本将成为我们小时项目的标题，所以我想
underscore pH school 强调pH学校和项目名称以及我的描述
and item name and my description do 强调pH学校和项目名称以及我的描述
underscore pH underscore item 下划线pH下划线项目说明，因此，
description so a couple of things with 下划线pH下划线项目说明，因此，
these texts now on my item name and my 这些文字现在放在我的商品名称和商品说明上，我希望这两个都
item description I want these two both 这些文字现在放在我的商品名称和商品说明上，我希望这两个都
rap so if it extends beyond the length 说唱，所以，如果它超出了盒子的长度，它将下降到
of the box it will just go down to the 说唱，所以，如果它超出了盒子的长度，它将下降到
next line so this item name here we're 下一行，因此此商品名称在这里我们将向下滚动，您会看到自动换行
going to scroll down you'll see autorap 下一行，因此此商品名称在这里我们将向下滚动，您会看到自动换行
text check the box and do the same for 文字检查框，并为商品说明做同样的事情，我也想
item description and I also want to 文字检查框，并为商品说明做同样的事情，我也想
change the font size of my item 更改我的商品说明的字体大小，使其与我的商品描述不同
description so it's not the same as my 更改我的商品说明的字体大小，使其与我的商品描述不同
title just makes it easier to read an e 标题只会使播放器更容易阅读，因此尺寸
lot clearer to the player so the size 标题只会使播放器更容易阅读，因此尺寸
here it's got a 24 change it to 14 ya do 在这里将24更改为14是，我们在这里完成了，所以我要
and we're done here so I'm going to 在这里将24更改为14是，我们在这里完成了，所以我要
create two variables and assign them to 创建两个变量并将它们分配给这些文本好吧，所以转到图形
these texts okay so just go to the graph 创建两个变量并将它们分配给这些文本好吧，所以转到图形
and on the graph here I am going to 在此图上，我将插入一个新的语言，这将
insert a new verbal and this is going to 在此图上，我将插入一个新的语言，这将
be the item name 是项目名称，三个是文本类型，然后我又去了
and three a text type and I went another 是项目名称，三个是文本类型，然后我又去了
one called the item description and for 一个叫做项目描述，对于这两个，我将展示它们
both of these I'm going to expose them 一个叫做项目描述，对于这两个，我将展示它们
and make them editable meaning that when 并使它们可编辑，这意味着当我实时创建此小部件时，
I create this widget in real time I'll 并使它们可编辑，这意味着当我实时创建此小部件时，
be able to set it in real time what 能够实时设置它，当您创建此小部件时
about when you create this widget you're 能够实时设置它，当您创建此小部件时
all set these rebels on creation click 所有这些都在创建时设置了这些叛逆者，然后单击“编译”回到设计器，现在
compile go back to the designer and now 所有这些都在创建时设置了这些叛逆者，然后单击“编译”回到设计器，现在
we need to bind these text values to 我们需要将这些文本值绑定到那些相应的变量，所以马丁
those corresponding variables so Martin 我们需要将这些文本值绑定到那些相应的变量，所以马丁
named here combined and choose item name 在这里命名并组合，然后选择项目名称，并在说明上绑定说明和
and on description bind description and 在这里命名并组合，然后选择项目名称，并在说明上绑定说明和
we've done here click compile and that's 我们在这里完成了点击编译，仅此而已
about it 我们在这里完成了点击编译，仅此而已
so let's close this and let's go to our 所以让我们关闭它，然后转到我们的库存位置，以便我们进入
inventory slot so we want to go onto the 所以让我们关闭它，然后转到我们的库存位置，以便我们进入
graph editor and it's what we had last 图编辑器，这就是我们上次使用的结构
time we've got a construct here we've 图编辑器，这就是我们上次使用的结构
got an on mouse button down and whatever 按下鼠标按钮，我们将在这里进行新的活动
else we're gonna make a new event here 按下鼠标按钮，我们将在这里进行新的活动
and your vent we're gonna get is mouse 我们将获得的通风口是鼠标间，因此当鼠标进入插槽时
inter so when the mouse enters the slot 我们将获得的通风口是鼠标间，因此当鼠标进入插槽时
space we are going to spawn or create 我们将产生的空间或创建我们的工具提示，让我们做到这一点
our tooltip so let's do that 我们将产生的空间或创建我们的工具提示，让我们做到这一点
go out here create widget and choose the 出去这里创建小部件并选择工具提示，如您所见
tooltip and as you can see those 出去这里创建小部件并选择工具提示，如您所见
variables are now appearing because we 现在出现变量，因为我们将其设为可编辑状态并在生成时公开
take that editable and expose on spawn 现在出现变量，因为我们将其设为可编辑状态并在生成时公开
this is a spawn here they are exposed 这是它们产生的地方，现在我们需要将值插入这些
now we need to plug values into these 这是它们产生的地方，现在我们需要将值插入这些
and we get those from the salaat content 我们从salaat内容中获取那些内容，因此将其拖出不是内容选择
so dragged out it's not contents choose 我们从salaat内容中获取那些内容，因此将其拖出不是内容选择
get and we want to split this open so 得到，我们要拆分此打开，所以写打开右键单击并拆分和
write open right-click and split and 得到，我们要拆分此打开，所以写打开右键单击并拆分和
right-click and split to get all the 右键单击并拆分以获取该项目在插槽中的所有详细信息，因此
details of the item inside our slots so 右键单击并拆分以获取该项目在插槽中的所有详细信息，因此
we've got the item name going there and 我们那里有项目名称，那里没有任何描述，所以
nothing description go in there so what 我们那里有项目名称，那里没有任何描述，所以
we create the widget we now need to 我们创建了小部件，现在需要将其附加到HUD，以便返回值
attach it to the HUD so return value 我们创建了小部件，现在需要将其附加到HUD，以便返回值
we're going to promote to verbal 我们将提升为口头语言，我将命名为我的老虎机工具
and I'm gonna name mine slot tool tool 我们将提升为口头语言，我将命名为我的老虎机工具
tip ego slot taught it and from there 提示自我插槽教了它，然后从那里获取HUD并将其添加
we're going to get the HUD and add this 提示自我插槽教了它，然后从那里获取HUD并将其添加
to the HUD so our HUD if you remember HUD，所以如果您没记错的话，我们的HUD实际上在我们的播放器上
rightly is actually on our player HUD，所以如果您没记错的话，我们的HUD实际上在我们的播放器上
controller so get the player controller 控制器，因此获取播放器控制器，然后我们将其投射到我的
and then we're going to cast it to my 控制器，因此获取播放器控制器，然后我们将其投射到我的
player controller and as my player 播放器控制器，作为我的播放器控制器，我们现在可以获取其HUD
controller we can now get their HUD 播放器控制器，作为我的播放器控制器，我们现在可以获取其HUD
widget okay and then from there we can 小部件好，然后从那里我们可以得到HUD画布
get the HUD canvas which is what we're 小部件好，然后从那里我们可以得到HUD画布
going to attach our taught it to so I 要附加我们教的内容，所以我想触摸它们，这意味着
wanted to touch their it means it'll 要附加我们教的内容，所以我想触摸它们，这意味着
show up on the screen so with the HUD 显示在屏幕上，因此使用HUD画布我们可以拖出
canvas we're going to drag out and go 显示在屏幕上，因此使用HUD画布我们可以拖出
add a child to canvas when we're done 当我们完成内容后，在画布上添加一个孩子，因为这将是该广告位
our content for this will be that slot 当我们完成内容后，在画布上添加一个孩子，因为这将是该广告位
tooltip okay so we added the child 工具提示好，所以我们现在添加了子画布，我们需要将其定位并
canvas now we need to position it and 工具提示好，所以我们现在添加了子画布，我们需要将其定位并
size it correctly so let's do the sizing 正确调整大小，让我们先进行大小调整，以使返回值除大小和
first so on return value except size and 正确调整大小，让我们先进行大小调整，以使返回值除大小和
you up set to auto size and tick the box 您将其设置为自动尺寸，然后在方框中打勾，然后从拖动的返回值中再次打勾
and again from the return value dragged 您将其设置为自动尺寸，然后在方框中打勾，然后从拖动的返回值中再次打勾
out and we want to set position and the 出来，我们想设置位置，并使用一个
position we're going to set to it with a 出来，我们想设置位置，并使用一个
mouse position because we want the 鼠标的位置，因为我们希望教它显示鼠标的位置
taught it to appear aware of the mouse 鼠标的位置，因为我们希望教它显示鼠标的位置
cursor lands okay so the in position 光标可以正常着陆，因此它的位置将来自get鼠标
it's going to come from the get mouse 光标可以正常着陆，因此它的位置将来自get鼠标
position on viewport and I will turn the 在视口上的位置，我将转动X＆Y坐标，这是一个
X&Y coordinates this is a 在视口上的位置，我将转动X＆Y坐标，这是一个
two-dimensional vector XY coordinates 屏幕上鼠标位置的二维矢量XY坐标
from the mouse position on the screen 屏幕上鼠标位置的二维矢量XY坐标
and set it to whatever that is in here 并将其设置为此处的任何内容，所以现在在此处进行设置，我们可以
okay so now make it up here and we can 并将其设置为此处的任何内容，所以现在在此处进行设置，我们可以
test this out if we go into our thing 如果我们在这里研究我们的东西，请测试一下，让我们拿起一些我可以
here and let's pick up some herbs I can 如果我们在这里研究我们的东西，请测试一下，让我们拿起一些我可以
right click and you see green herb here 右键单击，您会看到此处没有绿色药草
there none none 右键单击，您会看到此处没有绿色药草
but he said his issue is that it's now 但他说，他的问题是现在正在产生大量的工具提示，我们
spawning loads of tooltips which we 但他说，他的问题是现在正在产生大量的工具提示，我们
don't want cuz I still stick around so 不想因为我仍然坚持，所以我们要做的是在鼠标离开时做
what we want to do is do on Mouse leave 不想因为我仍然坚持，所以我们要做的是在鼠标离开时做
so we've got mouse enter we wanted to 所以我们有鼠标输入，我们想检查鼠标何时离开，在这里
check when mouse leave and here we're 所以我们有鼠标输入，我们想检查鼠标何时离开，在这里
going to simply remove the slot tooltip 只需从其父级中删除插槽工具提示，即可猜测已锁定
from its parent so just guess locked 只需从其父级中删除插槽工具提示，即可猜测已锁定
tooltip and then from there remove from 工具提示，然后从那里删除父项，然后从父项中删除
parent and I removed it from its parent 工具提示，然后从那里删除父项，然后从父项中删除
panel which is the camera slot which we 面板是我们坐在这里的相机插槽，所以我将其移除
sit over here so I remove it and the 面板是我们坐在这里的相机插槽，所以我将其移除
next thing I do is actually to save it 接下来我要做的实际上是从创建负载或工具提示中保存它
from creating loads or tooltips actually 接下来我要做的实际上是从创建负载或工具提示中保存它
we should be like we won't yeah it 我们应该像我们不会，应该没关系，我们不需要清除
should be alright we don't need to clear 我们应该像我们不会，应该没关系，我们不需要清除
it I don't think let's see we don't I 我不认为让我们看看我们不认为我们需要清除它只是进入
think we need to clear it just go into 我不认为让我们看看我们不认为我们需要清除它只是进入
our game push play and you see there the 我们的游戏推送游戏，您会看到当我离开鼠标时工具提示消失了
tooltip disappears when I mouse leaves 我们的游戏推送游戏，您会看到当我离开鼠标时工具提示消失了
and appears my mouse enters okay good 并出现我的鼠标进入好的好的好的好的所以接下来我要做的是
good okay so the next thing I do is I 并出现我的鼠标进入好的好的好的好的所以接下来我要做的是
don't want it to show none where's 不想让它什么都没显示好吧，我会得到的
nothing in this lot okay I'm gonna get 不想让它什么都没显示好吧，我会得到的
rid of that tooltip I don't like to show 摆脱了该工具提示，我不想显示插槽中是否没有东西，因此从
if there's nothing in a slot so from 摆脱了该工具提示，我不想显示插槽中是否没有东西，因此从
there I'm gonna go to the inventory tool 我将转到清单工具提示并转到图表，然后转到
tip and go to the graph and I will go to 我将转到清单工具提示并转到图表，然后转到
its construct event and what want to do 它的构造事件以及要做的是，我要检查其构造
is I'm gonna check on its construct what 它的构造事件以及要做的是，我要检查其构造
the item name is and if it's none then I 该项目的名称是，如果没有，那么我想设置此工具的可见性
want to set the visibility of this tool 该项目的名称是，如果没有，那么我想设置此工具的可见性
tip to be hidden so the item name drag 要隐藏的提示，以便将商品名称拖出即可得到，然后获取等于
that out just get and then get equals to 要隐藏的提示，以便将商品名称拖出即可得到，然后获取等于
text and it's a beauty of ranch so 文字，这是牧场的美丽，所以分支，因为我们要它
branch because we're asking it a 文字，这是牧场的美丽，所以分支，因为我们要它
question and the question we are asking 问题和我们要问的问题是项目名称等于另一项
is item name equal to another piece of 问题和我们要问的问题是项目名称等于另一项
text which will be literal 文字将是文字技术的文字，这就是您获得文字的方式
Tech's and that's how you you get that 文字将是文字技术的文字，这就是您获得文字的方式
you can actually type in now some text 您实际上可以现在在此处输入一些文本，所以如果它等于无
here none so if it is equal to none 您实际上可以现在在此处输入一些文本，所以如果它等于无
so true here we are going to change the 所以在这里，我们将更改整个广告位的可见性
visibility of our entire slot okay 所以在这里，我们将更改整个广告位的可见性
and I think we can do it from here 我认为我们可以从这里做到，可见度是确定的可能性
visibility yes set the possibility 我认为我们可以从这里做到，可见度是确定的可能性
anyone change the visibility down to 任何人都可以将可见性更改为隐藏点击编译，然后返回到您的
hidden click compile go back to your 任何人都可以将可见性更改为隐藏点击编译，然后返回到您的
game now if I go to my inventory it 现在，如果我去查看库存游戏，除非它有一个提示，否则不会显示工具提示
won't show a tooltip unless it has a 现在，如果我去查看库存游戏，除非它有一个提示，否则不会显示工具提示
slight bug there weren't wrapping 轻微的错误，没有自动包装自动包装哦，很奇怪
automatically straightaway Oh a weird 轻微的错误，没有自动包装自动包装哦，很奇怪
dollar what is after mm-hmm let's try 美元，mm-hmm之后是多少，让我们尝试重置
resetting 美元，mm-hmm之后是多少，让我们尝试重置
let's try clear that memory out so with 让我们尝试清除该内存，以便在完成
a slot tooltip when we've done the 让我们尝试清除该内存，以便在完成
emmaus and leave and I drag this out and 以马us斯离开，我将其拖出并选择设置工具提示，将其拖入和
choose set tooltip drag that in and 以马us斯离开，我将其拖出并选择设置工具提示，将其拖入和
leave this blank okay let's see if that 留下这个空白好吧，让我们看看是否可以解决这个问题，是的，我看起来哦，我
fixes that little over yeah I seem oh I 留下这个空白好吧，让我们看看是否可以解决这个问题，是的，我看起来哦，我
don't know 不知道奇怪可能是奇怪的事情
strange might be something weird with 不知道奇怪可能是奇怪的事情
the unreal I'll get back to you on that 我会在那件事上与您联系，这是不真实的，它可能需要做一些事情
one it might have something to do the 我会在那件事上与您联系，这是不真实的，它可能需要做一些事情
pre construct maybe pre construct by the 预构式也许是预构式，通过您可以看到它起作用的方式
way you can see the thought it working 预构式也许是预构式，通过您可以看到它起作用的方式
there and it won't show if there's 那里，它不会显示插槽中是否没有东西，所以绿色的草药
nothing in the slot so green herb a 那里，它不会显示插槽中是否没有东西，所以绿色的草药
simple green herb that can restore a 简单的绿色草药，可以恢复少量的健康和
small amount of health and the 简单的绿色草药，可以恢复少量的健康和
description you set in the items so herb 说明您在物品中设置的内容，例如草药，是的，如果我要去散步
yeah okay and if I'm going to my walk 说明您在物品中设置的内容，例如草药，是的，如果我要去散步
and say here a sturly rock ready for any 并在这里说一个坚固的岩石，可用于任何建筑项目
building project 并在这里说一个坚固的岩石，可用于任何建筑项目
bleh 拿起一些石头，你去那里
pick up some rocks and there you go and 拿起一些石头，你去那里
that's all there is to it and that I 这就是全部内容，我认为它将对库存系统起到作用
think will do for the inventory system 这就是全部内容，我认为它将对库存系统起到作用
for a while now thank you for watching 现在有一阵子，谢谢您收看整个系列
this whole entire series if you have any 现在有一阵子，谢谢您收看整个系列
questions or concerns or queries do you 您想问的问题，疑虑或疑问，请在下面留下评论
want to ask please leave a comment below 您想问的问题，疑虑或疑问，请在下面留下评论
or you can message me directly at my 或者您可以直接通过我的电子邮件地址Twitter向我发送消息
email address Twitter whatever you 或者您可以直接通过我的电子邮件地址Twitter向我发送消息
really like if you like these videos and 非常喜欢您喜欢这些视频并希望支持我制作我的视频
want to support me making my videos I do 非常喜欢您喜欢这些视频并希望支持我制作我的视频
have a patreon available which you can 有一个patreon可用，您可以单击描述或在我的关于
click in the description or on my about 有一个patreon可用，您可以单击描述或在我的关于
page and you can there donate just $1 a 页面，您可以在那里每月捐献1美元，就可以访问视频
month and you'll get access to videos to 页面，您可以在那里每月捐献1美元，就可以访问视频
weeks ahead of time so you can get a 请提前数周，以便您可以抢先体验任何类型的视频发行
head start on any kind of video releases 请提前数周，以便您可以抢先体验任何类型的视频发行
we do okay so thank you for your support 我们做得很好，谢谢您的支持，也感谢您的观看，我会看到
and thank you for watching and I'll see 我们做得很好，谢谢您的支持，也感谢您的观看，我会看到
you next time 你下次见
see ya 你下次见
[Music] [音乐]