我有一个用于Android手机的2D统一项目,有一个精灵,我在上面添加了按钮脚本 现在我要在上面使用色彩。
单击时更改颜色 但是颜色没有改变,我不想通过编程来实现 我已经尝试了很多东西,但仍然无法正常工作 我以前很幸运地解决了这个问题,但是现在我再也解决不了了 有人知道我在想什么吗?
答案 0 :(得分:2)
如警告中所述,您需要指定图形才能使用颜色。尝试在此处放入具有按钮精灵的Image组件。
答案 1 :(得分:1)
基于comment中的屏幕截图,您正在混合SpriteRenderer
和UI系统(Image
,RawImage
,Button
)。不要这样做。
阅读this以了解两者之间的区别。一旦确定要使用哪一个,就可以执行以下操作。
如果您决定使用UI来显示Sprite,请执行以下操作:
通过转到GameObject-> UI ---> Button创建新按钮。
如果您喜欢使用SpriteRenderer
:
从附加了Image
的GameObject中删除任何UI组件,例如RawImage
,Button
,SpriteRenderer
,然后手动创建突出显示代码。高亮功能仅内置于Button
组件中。 您不能将Button
组件与SpriteRenderer
一起使用。如果您想使用SpriteRenderer
,则必须自己制作。
这很容易。使用EventSystem。突出显示时更改OnPointerEnter
中的颜色,退出指针时更改为OnPointerExit
中的默认颜色。
这是一个简单的脚本(使用SpriteRenderer
组件附加到GameObject):
public class SpriteDetector : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
{
public Color normalColor = Color.white;
public Color highlightedColor = Color.yellow;
public Color pressedColor = Color.blue;
SpriteRenderer sp;
void Start()
{
sp = GetComponent<SpriteRenderer>();
addPhysics2DRaycaster();
}
void addPhysics2DRaycaster()
{
Physics2DRaycaster physicsRaycaster = GameObject.FindObjectOfType<Physics2DRaycaster>();
if (physicsRaycaster == null)
{
Camera.main.gameObject.AddComponent<Physics2DRaycaster>();
}
}
public void OnPointerEnter(PointerEventData eventData)
{
sp.color = highlightedColor;
}
public void OnPointerExit(PointerEventData eventData)
{
sp.color = normalColor;
}
public void OnPointerClick(PointerEventData eventData)
{
sp.color = pressedColor;
Debug.Log("Clicked: " + eventData.pointerCurrentRaycast.gameObject.name);
}
}