【问题标题】:Changing the object color when its touched in Unity在 Unity 中触摸时更改对象颜色
【发布时间】:2016-04-23 09:39:05
【问题描述】:

我想改变对象触摸时的颜色,使用我之前通过 Button(Color) 选择的颜色。

【问题讨论】:

  • 你在做哪一个有问题?检测触摸或改变颜色?什么是对象? 3D,2D精灵?将代码添加到您的问题中。努力吧!
  • 无法检测到哪个对象被触摸

标签: unity3d touch


【解决方案1】:

这只会向您展示一种更改对象颜色的方法。

     void OnMouseOver()
 {
      if (Input.GetMouseButtonDown(0))
      {
          renderer.material.color = Color.blue;
      }
 }

【讨论】:

  • 我想改变被触摸对象的颜色。当我触摸屏幕上的任何位置而不是对象时,您的代码会改变颜色
  • 这就是你要找的。将其放在要更改颜色的对象上的脚本中。每当您单击该对象时,该对象就会改变颜色。
  • 我试过了。无论我在哪里触摸屏幕,物体的颜色都会发生变化。我只想触摸物体来改变颜色
【解决方案2】:

添加组件 BoxCollider 到对象 resize BoxCollider 使其与对象一样大或比对象大一点 再次尝试此代码: 使用 UnityEngine; 使用 System.Collections;

公共类 ChangeCubeColor : MonoBehaviour {

private int clickCount = 0;
private MeshRenderer render;
private float red = 0.0f;
private float green = 0.0f;
private float blue = 0.0f;
void Start()
{
    render = GetComponent<MeshRenderer>();
}
void OnMouseOver()
{
    if (Input.GetMouseButtonDown(0))
    {
        if (clickCount % 2 != 0)
        {
            render.material.color = Color.red;
        }
        else
        {
            Color color = new Color(red,green,blue);
            render.material.color = color;
            red += 0.1f;
            blue += 0.2f;
            green += 0.3f;
        }
        ++clickCount;
    }
}

}

【讨论】:

    【解决方案3】:
    try like this:
     void OnGUI()
    {
        if(GUI.Button(new Rect(100,100,200,50),"Red"))
        {
            render.material.color = Color.red;
        }
        if(GUI.Button(new Rect(100,50,200,50),"Blue"))
        {
            render.material.color = Color.blue;
        }
        if(GUI.Button(new Rect(100,150,200,50),"Green"))
        {
            render.material.color = Color.green;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-04-21
      • 1970-01-01
      • 2017-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-09
      • 2012-09-19
      • 2013-05-28
      相关资源
      最近更新 更多