【发布时间】:2015-08-15 05:53:33
【问题描述】:
抱歉,如果有类似的问题,但是,我可能已经看到它并且它没有解决我的问题。
我正在尝试编写一个统一的 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;
}
}
}
请注意一些我尚未使用的变量,因为我仍在测试一堆其他代码以使其正常工作..
我试图修复的代码 sn-p 以“function OnGUI()”开头,但我可能错了,可以使用一些新的见解。
这是生成的脚本的屏幕截图。左边的按钮应该是通过鼠标点击按钮将材质的颜色从seat_mat1更改为seat_mat2。
我已将之前的脚本统一附加到 3D 对象,并创建了一个文件夹名称“资源”,以便通过脚本可见和引用材料。
我的问题是,单击 GUI 按钮后,什么也没有发生,这可能是一些非常简单的事情,我只是想念它.. 很抱歉在 JS 方面缺乏经验或缺乏统一性。
提前致谢。
编辑:
所以在玩了更多代码之后。我在这一行之后添加了一个 Debug.Log()
GetComponent.<Renderer>().material = seat_mat2;
Debug.Log("This button was clicked!");
似乎是每次按下按钮时我都会遇到的这个错误
“MissingComponentException:“scene_export3”游戏对象没有附加“渲染器”,但脚本正在尝试访问它。 您可能需要将渲染器添加到游戏对象“scene_export3”。或者您的脚本需要在使用之前检查组件是否已附加。 materialChanger.OnGUI () (at Assets/materialChanger.js:44)"
那么简单理解一下,好像是渲染器不怎么附加?
【问题讨论】:
标签: unity3d unityscript