
设置鼠标位置的话在Windows平台可以调用系统api SetCursorPos方法实现,但是在unity里面鼠标位置是只读的HTML中,input标签默认是有边框(border)和背景色属性的。可以在CSS中加入border:none;(或者在html中加入style:"border:none")可以去掉边框。 input标签在鼠标点击时,会有的边框。如果不需要,可以加input{outline:medium;}属性去掉。看这个代码貌似GUILabel会是总是存在的。
可以尝试用用bool变量进行区分。
bool tooltip1=false;
bool tooltip2=false;
function OnGUI()
{
if(GUIButton(Rect(10,10,120,110),GUIContent("我的按钮","这是第一个工具提示")))
{
print("用户单击了按钮");
tooltip1=true;
}
if(tooltip1)
{
GUILabel(Rect(10,120,100,20),GUItooltip);
}
if(GUIButton(Rect(210,210,120,110),GUIContent("我的按钮02","这是第二个工具提示")))
{
print("用户单击了按钮");
tooltip2=true; }
if(tooltip2)
{
GUILabel(Rect(110,120,100,20),GUItooltip);
}
}
这样就能够区分了。
接下来需要做的就是找一种方式将tooltip1和tooltip2重新置为false
这个我个人的方法是在update里面检测鼠标右键点击事件。
新手自学,这些是我个人的想法,如果不正确或者有好方法,请一定告诉我,谢谢了。因项目的需求,在制作中需要让UGUI中的组件,追随鼠标的运动轨迹。由于个人在以前使用中对于UGUI的坐标系了解不深,在使用中产生了一些问题,在此对UGUI的坐标系做一个简单的记录,以备后面查询。
Unity3D 采用InputmousePosition来获取当前鼠标的位置,获取的位置是相对于屏幕坐标系的,而UGUI使用的坐标系和屏幕坐标系不是同一个坐标系,
在UGUI中组件使用的坐标都是2D在Rect中的一个相对坐标,所以在实际使用中需要进行转换。
<pre>
public class test : MonoBehaviour
{
public RectTransform myRectTransform; // 目标组件
public Canvas myCanvas; // 当前画布
// Update is called once per frame
void Update ()
{
Vector2 vT = Vector2zero;
// 通过此函数,将鼠标坐标,从屏幕坐标,转换到UGUI坐标
RectTransformUtilityScreenPointToLocalPointInRectangle(myCanvastransform as RectTransform, InputmousePosition, myCanvasworldCamera, out vT);
myRectTransformlocalPosition = vT;
}
}
</pre>
#######附带一说,在Unity3D中可以使用函数ScreenshowCursor(老版本)、UnityEngineCursorvisible来显示和隐藏鼠标
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)