找回密码
 立即注册
查看: 3708|回复: 59

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

[复制链接]
发表于 2013-4-8 14:33 | 显示全部楼层 |阅读模式
   现做的unity 增强现实项目中有一个汽车模型,该模型有四张Psd贴图。 求一个脚本实现:四个button 控制四张贴图。
发表于 2013-4-8 16:21 | 显示全部楼层
什么叫四个button控制四张贴图,你想要怎么控制,说明白点。还要你的button是要用哪种实现自带GUI,还是插件GUI
 楼主| 发表于 2013-4-9 08:53 | 显示全部楼层
不好意思  我没说明白。   我的这个unity工程是要导出到安卓平板上的,要求在平板上点击四个按钮,给模型换四个颜色。 也就是每个按钮对应一个颜色的贴图。  这个按钮可以是unity中的GUISkin.   

点评

public Texture btnTexture; void OnGUI() { if (GUI.Button(new Rect(10, 10, 50, 50), btnTexture)) { Debug.Log("Clicked the button with an image"); } } 设置四个button和四个贴图  详情 回复 发表于 2013-4-9 09:08
发表于 2013-4-9 09:08 | 显示全部楼层
Answer 发表于 2013-4-9 08:53
不好意思  我没说明白。   我的这个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[1].mainTexture = btnTexture;
                Car.renderer.materials = MyMats;这两句代码放在上面Debug的位置。如果只有一个材质球就简单了,就不用数组获取。MyMats = Car.renderer.material;MyMats.mainTexture = btnTexture;Car.renderer.materials = MyMats
 楼主| 发表于 2013-4-9 10:55 | 显示全部楼层


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

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

晕,你不是学程序的吧,写的还不明白。好吧 using UnityEngine; using System.Collections; public class test : MonoBehaviour { public Texture2D tex01; public GameObject Car; private Material ca  详情 回复 发表于 2013-4-9 13:44
发表于 2013-4-9 13:44 | 显示全部楼层
Answer 发表于 2013-4-9 10:55
你好  图片能看清楚吗   车的模型有三个材质球  分别是车身 玻璃  轮胎   但是换贴图我只需要换车身也就 ...

晕,你不是学程序的吧,写的还不明白。好吧
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.....)就可以了

点评

我稍微能看懂点JS脚本,C#不太懂。 不知道你对JS脚本熟不熟,在你回复之前 我找了一个js脚本改了改,button可以了 。但是模型贴图换不了 。我大概知道是代码中的图片数组调用问题。但是不知道怎么改,能帮忙看  详情 回复 发表于 2013-4-9 16:37
 楼主| 发表于 2013-4-9 16:32 | 显示全部楼层
谢谢啊   我真不是做程序的    你对js脚本熟吗
 楼主| 发表于 2013-4-9 16:37 | 显示全部楼层
本帖最后由 Answer 于 2013-4-9 16:38 编辑
乐依忆 发表于 2013-4-9 13:44
晕,你不是学程序的吧,写的还不明白。好吧
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[0];
       }
  else  if (GUI.Button (Rect (10,90,100,60), "blue"))
     {   
        Body_Complete.renderer.material.mainTexture = textures[1];
      }
   else if (GUI.Button (Rect (10,170,100,60), "yellow"))
    {
        Body_Complete.renderer.material.mainTexture = textures[2];
       }
  else  if (GUI.Button (Rect (10,250,100,60), "white"))
        {
        Body_Complete.renderer.material.mainTexture = textures[3];
        }
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
 楼主| 发表于 2013-4-9 17:41 | 显示全部楼层
解决了    十分感谢  上边脚本没问题   就差一步  实例话图片

点评

图片我是设置的共有变量,你直接在{Project中找到然后托给这个变量就可以了  详情 回复 发表于 2013-4-10 09:05
发表于 2013-4-10 09:05 | 显示全部楼层
Answer 发表于 2013-4-9 17:41
解决了    十分感谢  上边脚本没问题   就差一步  实例话图片

图片我是设置的共有变量,你直接在{Project中找到然后托给这个变量就可以了
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-22 22:46 , Processed in 0.072654 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表