但是,如果有類似的問題,我很抱歉,我可能已經看到它,但它並沒有解決我的問題。腳本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