但是,如果有类似的问题,我很抱歉,我可能已经看到它,但它并没有解决我的问题。脚本GUI按钮触发更改材质的事件
我想写一个JS脚本为了实现一个点击触发的事件。
我在网上搜索了UnityAnswers网站和其他人,我可以得到最接近的是基于这些问题 http://answers.unity3d.com/questions/368303/changing-shaders-of-a-gameobject-via-script-1.html
而这一次 http://answers.unity3d.com/questions/319875/change-objects-material-using-gui-buttons-via-scri.html
,也看了这一个 http://docs.unity3d.com/ScriptReference/Material-shader.html
所以,我的代码是这个到目前为止
var button2_tex : Texture;
var button3_tex : Texture;
var button4_tex : Texture;
var seat_mat1 : Material;
var seat_mat2 : Material;
var veneer1 : Texture;
var veneer2 : Texture;
var rend : Renderer;
var _mouseDown = false;
function Start() {
seat_mat1 = Resources.Load("seat_mat1");
seat_mat2 = Resources.Load("seat_mat2");
}
function Update(){
if(Input.GetMouseButtonDown(0)){
_mouseDown = true;
}
}
function OnGUI() {
GUI.Box (Rect (10,10,100,200), "Menu");
if (_mouseDown){
if (GUI.Button (Rect (20,40,40,20), button1_tex)){
if(seat_mat1){
rend.material = seat_mat2;
Debug.Log("This button was clicked!");
}
else{
rend.material = seat_mat1;
}
}
}
请注意我尚未使用的一些变量,因为我仍在测试一堆其他代码,以使其工作..
我试图修复的代码片段以“function OnGUI()”开头,但是我也许是错的,可以使用一些新的见解。
这是生成的脚本的屏幕截图。假设左侧的按钮通过鼠标点击按钮将材料的颜色从seat_mat1更改为seat_mat2。
我重视前面的脚本,以团结3D对象,并做了一个文件夹名称“资源”的物质是可见的,并通过脚本引用。
我的问题是,单击GUI按钮时,什么也没有发生,它可能是一个非常简单的东西,我只是想念它..道歉没有经验的JS很多或团结。
在此先感谢。
编辑:
所以打多一点的代码之后。我此行
GetComponent.<Renderer>().material = seat_mat2;
Debug.Log("This button was clicked!");
后加入的debug.log(),似乎是这个错误,我越来越每次按下按钮
时间“MissingComponentException:没有‘渲染’连着到“scene_export3”游戏对象,但脚本正在尝试访问它 您可能需要将渲染器添加到游戏对象“scene_export3”中,或者您的脚本需要在使用之前检查组件是否已连接 materialChanger .OnGUI()(在Assets/materialChanger.js:44)“
因此,通过简单的了解,似乎渲染器不是以某种方式连接的?
谢谢您的回答,我明白,我不需要每次都加载它们,但我仍然尝试,实现了工作代码。我知道我的理论上可以工作,但是,有些事我无法控制,那就是没有操作它。我将脚本作为一个整体附加到gameObject中,因为我正在寻找使用相同材质更改所有对象的材质,例如seat_mat1到seat_mat2。现在我明白了渲染器本身并没有按照上面的编辑开始,现在我正在关注这一点,我希望很快能够找到答案。 –
是的,这正是问题所在,因为您已将脚本附加到错误的游戏对象上,而应将此脚本附加到应用了材质的游戏对象。 – Nain
,或者您可以将seat_mat1材质应用于具有此脚本的gameobject,即使这样它也可以工作。因为异常显示游戏对象没有渲染,但你使用的是GetComponent。().material会得到gameobject的渲染器,如果没有附加,它会通过例外 –
Nain