如何在 gameObject 上做 "highlighting"
How to do "highlighting" on gameObject
我正在制作类似方块的游戏,现在我想在鼠标悬停在特定方块上时实现突出显示方块(游戏对象)。
我试过这样的方法(我不确定这是最好的方法,但这只是我想到的一种方法):
#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纹理,所以看起来它被高亮了...
P.S。我的计划是使用悬停布尔值来检查玩家是否仍在悬停,如果不是纹理应该是 deleted/hidden(关于如何做到这一点的任何想法?)。
假设您想将鼠标所在对象的颜色更改为红色
您应该使用 OnMouseEnter
检查鼠标是否在您的对象上,并使用 OnMouseExit
检查鼠标何时离开对象区域,我们将其颜色设置回更改之前的原始颜色
private color tempColor;
void OnMouseEnter()
{
tempColor = renderer.material.color;
renderer.material.color = Color.red;
}
void OnMouseExit()
{
renderer.material.color = tempColor;
}
我正在制作类似方块的游戏,现在我想在鼠标悬停在特定方块上时实现突出显示方块(游戏对象)。
我试过这样的方法(我不确定这是最好的方法,但这只是我想到的一种方法):
#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纹理,所以看起来它被高亮了...
P.S。我的计划是使用悬停布尔值来检查玩家是否仍在悬停,如果不是纹理应该是 deleted/hidden(关于如何做到这一点的任何想法?)。
假设您想将鼠标所在对象的颜色更改为红色
您应该使用 OnMouseEnter
检查鼠标是否在您的对象上,并使用 OnMouseExit
检查鼠标何时离开对象区域,我们将其颜色设置回更改之前的原始颜色
private color tempColor;
void OnMouseEnter()
{
tempColor = renderer.material.color;
renderer.material.color = Color.red;
}
void OnMouseExit()
{
renderer.material.color = tempColor;
}