您好，欢迎光临，我是您的代码猴子，我们正在继续制作此视频 hello and welcome I am your code monkey
您好，欢迎光临，我是您的代码猴子，我们正在继续制作此视频 min this video we're continuing to make
统一的工具提示，我们将确保工具提示永远不会离开屏幕 a tool tip in unity we're going to make
统一的工具提示，我们将确保工具提示永远不会离开屏幕 sure our tooltip never leaves the screen
始终处于最重要的位置，让我们开始吧 and is always on top let's begin
好的，这是我们在上一个视频中创建的工具提示，您可以看到 okay so this is the tooltip we created
好的，这是我们在上一个视频中创建的工具提示，您可以看到 in a previous video as you can see it
当我将鼠标移到按钮上并正确显示背景时会显示 shows up when I pass the mouse over a
当我将鼠标移到按钮上并正确显示背景时会显示 button and the background correctly
缩放以适应我现在给它的任何文本，我们遇到的一种方式问题是 scales to fit whatever text I give it
缩放以适应我现在给它的任何文本，我们遇到的一种方式问题是 now one way issue we have is if we have
屏幕右侧旁边的按钮，因此窗口位于 a button right next to the side of the
屏幕右侧旁边的按钮，因此窗口位于 screen so with the window right at the
如果我将鼠标移到屏幕边缘，则向右移动，就像你 edge of the screen if I pass the mouse
如果我将鼠标移到屏幕边缘，则向右移动，就像你 over and I move to the right and as you
可以看到文本现在被隐藏了，我们无法真正阅读它，所以让我们解决 can see the text is now hidden and we
可以看到文本现在被隐藏了，我们无法真正阅读它，所以让我们解决 can't really read it so let's solve that
问题，因此在代码中，移动工具提示的代码在此处 problem so here in the code the code
问题，因此在代码中，移动工具提示的代码在此处 that moves our tooltip is up here on the
更新，我们正在考虑使用rect转换实用程序引导本地点 update we are accounting leading a local
更新，我们正在考虑使用rect转换实用程序引导本地点 point using the rect transform utility
将鼠标位置转换为画布内的位置 to convert our mouse position into a
将鼠标位置转换为画布内的位置 position inside our canvas now there are
验证位置的两种方法我们可以尝试验证屏幕的位置 two ways we can validate our position we
验证位置的两种方法我们可以尝试验证屏幕的位置 can try to validate the screen position
在进行转换之前，我们将修改情感输入，或者我们可以更正 before converting it so we would modify
在进行转换之前，我们将修改情感输入，或者我们可以更正 the input of emotion or we can correct
将锚定位置实际放置在正常位置后 the anchored position after we actually
将锚定位置实际放置在正常位置后 place it on the normal position
我们将在之后进行更正，因为这样我们就不再需要 we're going to correct it afterwards
我们将在之后进行更正，因为这样我们就不再需要 since that way we no longer need to
担心屏幕空间转换，并且代码不会更容易遵循 worry about screen space conversions and
担心屏幕空间转换，并且代码不会更容易遵循 the code won't be easier to follow
首先让我们抓住新的锚定位置 so first let's grab the new anchored
首先让我们抓住新的锚定位置 position so a vector - for a anchored
位置，我们将从右侧的Kid组件类型的转换中获取它 position we're going to grab it from the
位置，我们将从右侧的Kid组件类型的转换中获取它 transform the Kid component type right
变换并抓住锚定位置，所以我们现在有了一个不错的向量 transform and grab the anchored position
变换并抓住锚定位置，所以我们现在有了一个不错的向量 all right so we now have a nice vector
到包含跟随鼠标的确切位置的位置，所以在这里 to position that contains the exact
到包含跟随鼠标的确切位置的位置，所以在这里 position following the mouse so in here
我们需要测试是否要经过屏幕右侧，以便测试是否 we need to test if we're going past the
我们需要测试是否要经过屏幕右侧，以便测试是否 right side of the screen so we test if
我们的定位点X就是背景的大小，所以在那上面， our anchored position dot X was this
我们的定位点X就是背景的大小，所以在那上面， size of our background so up there we
有背景rect变换，所以我们得到rect have the background rect transform so we
有背景rect变换，所以我们得到rect get the rect
点宽度，因此此位置将是鼠标的位置加上 dot width so this position will be the
点宽度，因此此位置将是鼠标的位置加上 position of the mouse plus the
背景尺寸，因此如果此尺寸大于画布的宽度，那么在这里我们 background size so if this one is bigger
背景尺寸，因此如果此尺寸大于画布的宽度，那么在这里我们 than the width of our canvas so here we
需要一个序列化字段用于我们的画布rect的私有rect转换 need a serialized field for a private
需要一个序列化字段用于我们的画布rect的私有rect转换 rect transform for our canvas rect
使用画布rect变换进行变换我们可以访问rect点 transform using our canvas rect
使用画布rect变换进行变换我们可以访问rect点 transform we can access the rect dot
宽度，如果我们的x位置加上背景的宽度大于 width so if our x position plus the
宽度，如果我们的x位置加上背景的宽度大于 width of our background is bigger than
画布的宽度，那么我们已经超出了屏幕的边缘，因此我们只需 the canvas width then we have gone past
画布的宽度，那么我们已经超出了屏幕的边缘，因此我们只需 the edge of our screen so we simply
将X的锚定位置重置为宽度减去后背的大小 reset the anchored position that X to be
将X的锚定位置重置为宽度减去后背的大小 on the width minus the size of our back
这样一来，它恰好在右侧拥抱，最后我们只需做一个 and that way it is exactly hugging the
这样一来，它恰好在右侧拥抱，最后我们只需做一个 right side and finally we simply do a
变换获取我们rect变换的组件并设置锚定位置 transform get component of our rect
变换获取我们rect变换的组件并设置锚定位置 transform and set the anchored position
成为我们的固定位置吧，让我们测试一下，好吧，我在这里 to be our anchored position all right
成为我们的固定位置吧，让我们测试一下，好吧，我在这里 so let's test and okay here I am with my
工具提示，如果我经过，然后移至右侧，然后就可以了 tooltip and if I pass over and I move to
工具提示，如果我经过，然后移至右侧，然后就可以了 the right and yep there you go once it
到达那里，它不再隐藏在屏幕后面，并且现在可以正确定位在 gets there it no longer hides behind the
到达那里，它不再隐藏在屏幕后面，并且现在可以正确定位在 screen and it now correctly locates in
为了确保始终可以读取提示音 order to make sure that tone tip is
为了确保始终可以读取提示音 always able to be read
现在只是不注意这里的计算，看看我们是否已经过去 now just only don't note here the
现在只是不注意这里的计算，看看我们是否已经过去 calculation to see if we have gone past
如果我们在这里使用屏幕，我们正在测试X和 the screen in the case that we are using
如果我们在这里使用屏幕，我们正在测试X和 in here we are testing the X plus the
宽度大于画布右移以及我们的宽度和原因 width is bigger than the canvas right
宽度大于画布右移以及我们的宽度和原因 transfer and our width and the reason we
之所以可以这样做，是因为如果我们 can do this is because we have anchored
之所以可以这样做，是因为如果我们 to the in left position if we were
锚定到中间，然后将其除以二除 anchoring to the middle then it would be
锚定到中间，然后将其除以二除 wrecked out with divided by two so in
为了使事情简单，我们只需将其锚定在左侧， order to keep things simple we simply
为了使事情简单，我们只需将其锚定在左侧， anchor it to the left side and that way
它从零到画布，没有宽度，所以现在我们正确了 it goes from zero to canvas not width
它从零到画布，没有宽度，所以现在我们正确了 all right so now that we are correctly
不要将工具提示隐藏在x轴上，并确保它也不会停留在 not hiding the tooltip on the x-axis and
不要将工具提示隐藏在x轴上，并确保它也不会停留在 let's make sure it also doesn't leave on
y轴，所以在这里我们做的事情差不多，除了X之外 the y-axis so in here we do very much
y轴，所以在这里我们做的事情差不多，除了X之外 the same thing except instead of the X
我们修改了Y并设置了宽度，我们修改了高度，所以我已经发货了 we modify the Y and set the width we
我们修改了Y并设置了宽度，我们修改了高度，所以我已经发货了 modify the height so here I have shipped
窗户到拐角处，我给出了三行攻击 the window to the corners and I have
窗户到拐角处，我给出了三行攻击 given three lines to the attacks and
让我们看看，是的，你走了三行，通常他们都会 let's see and yep there you go it has
让我们看看，是的，你走了三行，通常他们都会 three lines and normally they would all
超过高度，但现在它们正确地停留在屏幕内 go past the height but right now they
超过高度，但现在它们正确地停留在屏幕内 are correctly staying inside the screen
因此，如果我将攻击力移至右侧，您会发现它并不会 so if I move the attack damage to the
因此，如果我将攻击力移至右侧，您会发现它并不会 right you can see it doesn't leave to
右侧，也不会留下所有错误，因此我们的工具提示不再有效 the right side and also doesn't leave up
右侧，也不会留下所有错误，因此我们的工具提示不再有效 all right so our tooltip no longer goes
越过屏幕的任一边缘，它现在始终可读且可见 past either edge of our screen that way
越过屏幕的任一边缘，它现在始终可读且可见 it is always readable and visible now
我们的工具提示中还有一个小问题是关于排序 one small issue we still have with our
我们的工具提示中还有一个小问题是关于排序 tooltip is with regards to the sorting
现在订购，一切正常，并且工具提示位于顶部，但是如果我们 order right now it all works correctly
现在订购，一切正常，并且工具提示位于顶部，但是如果我们 and the tooltip is on top however if we
在运行时实例化另一个窗口，所以我可以通过简单地模拟它 were to instantiate another window in
在运行时实例化另一个窗口，所以我可以通过简单地模拟它 runtime so I can simulate it by simply
暂停并复制窗口，您可以看到我的窗口位于 pausing and duplicate the window and you
暂停并复制窗口，您可以看到我的窗口位于 can see I've got the window on top of
工具提示和现在，让我们将该窗口向右移一点 the tooltip and right now let's shift
工具提示和现在，让我们将该窗口向右移一点 this window a little bit to the right
就像这是顶部的窗口，如果我通过鼠标按钮， and just like that this is the window on
就像这是顶部的窗口，如果我通过鼠标按钮， top and if I pass the mouse button and
是的，工具提示现在被UI排序的第二个窗口隐藏了 yep there is the tooltip is now hidden
是的，工具提示现在被UI排序的第二个窗口隐藏了 by the second window the UI sorting
顺序是基于层次结构的，所以当您犯罪时，她会在运行时吃一些东西 order is based on hierarchy so when you
顺序是基于层次结构的，所以当您犯罪时，她会在运行时吃一些东西 in sin she ate something in runtime it
这些最后的兄弟姐妹会自动播放 automatically play
这些最后的兄弟姐妹会自动播放 is it as these last sibling so in this
外壳并最终位于倾斜的顶部，因此，通过确保 case and ends up on top of the Tilted so
外壳并最终位于倾斜的顶部，因此，通过确保 let's fix that by making sure the
工具提示始终是最后一个兄弟姐妹，因此在这里我们被嘲笑 tooltip is always the last sibling
工具提示始终是最后一个兄弟姐妹，因此在这里我们被嘲笑 so over here we go to the show taunted
函数，我在这里有游戏对象，所以在这里，我们需要做的所有事情 function I have the game object in here
函数，我在这里有游戏对象，所以在这里，我们需要做的所有事情 so in here all we need to do in order to
将工具提示设置在顶部只是将变换点设置为最后一个同级 set the tooltip on top is simply do a
将工具提示设置在顶部只是将变换点设置为最后一个同级 transform dot set as last sibling this
一个人把它当作同一个父母中的同胞，所以现在在这里和 one put it as no less sibling within the
一个人把它当作同一个父母中的同胞，所以现在在这里和 same parent so right now in here and
让我们首先复制此窗口，您会看到工具提示不在顶部，因此 let's first duplicate this window and as
让我们首先复制此窗口，您会看到工具提示不在顶部，因此 you can see the tooltip is not on top so
让我们把它和一个窗口放在右边，您可以在默认情况下看到 let's put this and a window are there on
让我们把它和一个窗口放在右边，您可以在默认情况下看到 the right as you can see by default in
编辑器中，我们的工具提示隐藏在该窗口的后面，但是当我们运行代码时 the editor our tooltip is hidden behind
编辑器中，我们的工具提示隐藏在该窗口的后面，但是当我们运行代码时 this window however when we run the code
越过那一个，然后您就可以将其放在两个人的上方，这样我现在就可以 pass over that one and there you go it
越过那一个，然后您就可以将其放在两个人的上方，这样我现在就可以 is on top of both of them so I can now
过去，看到那个几乎隐藏的按钮是顾客按钮， past and see that that button that is
过去，看到那个几乎隐藏的按钮是顾客按钮， almost hidden is the patron button and
如您所见，我也可以暂停它，在这里复制窗口，您可以 as you can see I can also pause it and
如您所见，我也可以暂停它，在这里复制窗口，您可以 here duplicate the window and you can
看到舌尖现在不再在顶部，所以我暂停它，但是当我运行 see the tongue tip is now no longer on
看到舌尖现在不再在顶部，所以我暂停它，但是当我运行 top so I pause it but when I run the
显示代码，它会自动设置为我的汇编代码，因此始终可见 show code it automatically sets as my
显示代码，它会自动设置为我的汇编代码，因此始终可见 assembling so it is always visible and
总是在最上面，所以在那里您可以使用我们的工具提示，并确保它永远不会 always on top so there you have it we
总是在最上面，所以在那里您可以使用我们的工具提示，并确保它永远不会 took our tooltip and made sure it never
离开屏幕，并始终在下一个要抛光的视频中位于顶部 leaves the screen and is always on top
离开屏幕，并始终在下一个要抛光的视频中位于顶部 in the next video we're going to polish
通过添加各种功能来更新文本或 up our tooltip by adding various
通过添加各种功能来更新文本或 functions in order to update the text or
一如往常，您可以在Tonys中下载项目文件 do a small admission as always you can
一如往常，您可以在Tonys中下载项目文件 download the project files in the Tonys
如果您有任何问题，请从统一代码猴子通讯处获得。 from unity code monkey comm if you have
如果您有任何问题，请从统一代码猴子通讯处获得。 any questions post them in the comments
我会尽力回答他们订阅更多视频，然后我会看到 and I'll do my best answer them
我会尽力回答他们订阅更多视频，然后我会看到 subscribe for more videos and I'll see
下次你 you next time