【问题标题】:How to do "highlighting" on gameObject如何在游戏对象上“突出显示”
【发布时间】:2015-02-07 15:21:02
【问题描述】:

我正在制作一个类似块的游戏,现在我想在特定块上有鼠标悬停时实现突出显示块(游戏对象)。

我尝试过这样的事情(我不确定这是不是最好的方法,但这只是我的想法):

#pragma strict

public class BlockSelecting extends MonoBehaviour {


public var hovering : boolean = false;

public var xpos : float;
public var ypos : float;

function Start () {

}

function Update () {

}

function OnMouseExit () {
hovering = false;
}

function OnMouseOver () 
{     
        hovering = true;
        xpos = Input.mousePosition.x;
        ypos = Input.mousePosition.y;
}
function OnGUI ()
{
GUI.DrawTexture(new Rect(xpos, xpos, 26, 26), (Resources.Load("highlight") as Texture2D));
}
}

这不起作用,因为纹理没有显示鼠标指针的位置。有什么我看不到的,或者这是错误的方法吗?我的高亮资源只是一个透明矩形的 26x26(块为 25x25)2D 纹理,所以看起来它被高亮了...

附:我的计划是使用悬停布尔值来检查玩家是否仍在悬停,如果不是,则应删除/隐藏纹理(有关如何执行此操作的任何想法?)。

【问题讨论】:

    标签: unity3d hover unityscript


    【解决方案1】:

    假设您想将鼠标所在对象的颜色更改为红色,因此 您应该使用OnMouseEnter 来检查鼠标是否在您的对象上,并使用OnMouseExit 来检查鼠标何时退出对象区域并且我们将其颜色设置回更改之前的原始颜色

    private color tempColor;
     void OnMouseEnter()
     {
         tempColor = renderer.material.color;
         renderer.material.color = Color.red;
     }
     void OnMouseExit()
     {
         renderer.material.color = tempColor;
     }
    

    【讨论】:

    • 这样做的好方法!谢谢!
    猜你喜欢
    • 2023-03-07
    • 2016-11-04
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 2015-04-06
    • 1970-01-01
    相关资源
    最近更新 更多