求一个 由button控制目标体替换贴图脚本
现做的unity 增强现实项目中有一个汽车模型,该模型有四张Psd贴图。 求一个脚本实现:四个button 控制四张贴图。什么叫四个button控制四张贴图,你想要怎么控制,说明白点。还要你的button是要用哪种实现自带GUI,还是插件GUI 不好意思我没说明白。 我的这个unity工程是要导出到安卓平板上的,要求在平板上点击四个按钮,给模型换四个颜色。 也就是每个按钮对应一个颜色的贴图。这个按钮可以是unity中的GUISkin. 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
你好图片能看清楚吗 车的模型有三个材质球分别是车身 玻璃轮胎 但是换贴图我只需要换车身也就是第一个材质球就可以了。 我不太会c#
能把脚本写详细一点吗 谢谢了 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.....)就可以了 谢谢啊 我真不是做程序的 你对js脚本熟吗 本帖最后由 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 static/image/common/back.gif
解决了 十分感谢上边脚本没问题 就差一步实例话图片
图片我是设置的共有变量,你直接在{Project中找到然后托给这个变量就可以了
页:
[1]