Answer 发表于 2013-4-8 14:33

求一个 由button控制目标体替换贴图脚本

   现做的unity 增强现实项目中有一个汽车模型,该模型有四张Psd贴图。 求一个脚本实现:四个button 控制四张贴图。

乐依忆 发表于 2013-4-8 16:21

什么叫四个button控制四张贴图,你想要怎么控制,说明白点。还要你的button是要用哪种实现自带GUI,还是插件GUI

Answer 发表于 2013-4-9 08:53

不好意思我没说明白。   我的这个unity工程是要导出到安卓平板上的,要求在平板上点击四个按钮,给模型换四个颜色。 也就是每个按钮对应一个颜色的贴图。这个按钮可以是unity中的GUISkin.   

乐依忆 发表于 2013-4-9 09:08

Answer 发表于 2013-4-9 08:53 static/image/common/back.gif
不好意思我没说明白。   我的这个unity工程是要导出到安卓平板上的,要求在平板上点击四个按钮,给模型换 ...

public Texture btnTexture;
void OnGUI()
{
        if (GUI.Button(new Rect(10, 10, 50, 50), btnTexture))
      {
                Debug.Log("Clicked the button with an image");
      }
}
设置四个button和四个贴图变量,然后这句代码就可以获取点击事件。然后更换你的模型的材质的贴图。如果你的那个模型上不止一个材质球,那就获取所有的材质球MyMats = Car.renderer.materials;然后看看那个材质球的贴图更换后是你要的结果。例如第二个材质球是,MyMats.mainTexture = btnTexture;
                Car.renderer.materials = MyMats;这两句代码放在上面Debug的位置。如果只有一个材质球就简单了,就不用数组获取。MyMats = Car.renderer.material;MyMats.mainTexture = btnTexture;Car.renderer.materials = MyMats

Answer 发表于 2013-4-9 10:55



你好图片能看清楚吗   车的模型有三个材质球分别是车身 玻璃轮胎   但是换贴图我只需要换车身也就是第一个材质球就可以了。 我不太会c#
能把脚本写详细一点吗   谢谢了

乐依忆 发表于 2013-4-9 13:44

Answer 发表于 2013-4-9 10:55 static/image/common/back.gif
你好图片能看清楚吗   车的模型有三个材质球分别是车身 玻璃轮胎   但是换贴图我只需要换车身也就 ...

晕,你不是学程序的吧,写的还不明白。好吧
using UnityEngine;
using System.Collections;
public class test : MonoBehaviour
{       
        public Texture2D tex01;
        public GameObject Car;
        private Material car_material;
        // Use this for initialization
        void Start()
        {       
                car_material = Car.renderer.material;
        }

        // Update is called once per frame
        void Update()
        {               
        }
        void OnGUI()
        {
                if(GUI.Button(new Rect(0,0,100,100),tex01))
                {
                        car_material.mainTexture = tex01;
                        Car.renderer.material = car_material;
                }
        }
}然后你把这个脚本随便付给一个物体 然后选择一张你要的图片拖到这个tex01变量上,然后把你的模型拖到Car变量上。至于界面上带图片的button的大小你自己调整吧,其余的三个button你自己写上就可以了吧,一样,再声明一个texture变量,然后再加一个if(GUI.....)就可以了

Answer 发表于 2013-4-9 16:32

谢谢啊   我真不是做程序的    你对js脚本熟吗

Answer 发表于 2013-4-9 16:37

本帖最后由 Answer 于 2013-4-9 16:38 编辑

乐依忆 发表于 2013-4-9 13:44 static/image/common/back.gif
晕,你不是学程序的吧,写的还不明白。好吧
using UnityEngine;
using System.Collections;


我稍微能看懂点JS脚本,C#不太懂。

不知道你对JS脚本熟不熟,在你回复之前 我找了一个js脚本改了改,button可以了 。但是模型贴图换不了。我大概知道是代码中的图片数组调用问题。但是不知道怎么改,能帮忙看下吗 。




var textures : Texture[];var MyGUISkins :GUISkin;var Body_Complete :GameObject;
function OnGUI () {        GUI.skin=MyGUISkins;    if (GUI.Button (Rect (10,10,100,60), "red"))    {      Body_Complete.renderer.material.mainTexture = textures;       }elseif (GUI.Button (Rect (10,90,100,60), "blue"))   {         Body_Complete.renderer.material.mainTexture = textures;      }   else if (GUI.Button (Rect (10,170,100,60), "yellow"))    {      Body_Complete.renderer.material.mainTexture = textures;       }elseif (GUI.Button (Rect (10,250,100,60), "white"))        {      Body_Complete.renderer.material.mainTexture = textures;      }}

Answer 发表于 2013-4-9 17:41

解决了    十分感谢上边脚本没问题   就差一步实例话图片

乐依忆 发表于 2013-4-10 09:05

Answer 发表于 2013-4-9 17:41 static/image/common/back.gif
解决了    十分感谢上边脚本没问题   就差一步实例话图片

图片我是设置的共有变量,你直接在{Project中找到然后托给这个变量就可以了
页: [1]
查看完整版本: 求一个 由button控制目标体替换贴图脚本