[英]Change color of prefab instances
我的斷言中有兩個預制件。 在我的場景中,我有兩個預制件的實例。 我試圖通過單擊按鈕來更改一個預制件的所有實例的顏色,但是我得到的是兩個預制件的所有實例的顏色都改變了。 我如何指示預制件在特定功能內進行更改? 我猜想gameObject指的是我場景中的所有gameObjects,可能就是所有實例更改顏色的原因。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class eventSensors : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
public void tempSensor() {
print("estas en la funcuion de tempSensor");
// this.gameObject.GetComponent<Renderer> ().material.color = Color.red;
//gameObject.GetComponent<Renderer>().sharedMaterial.color = Color.red;
var prefab= Instantiate(gameObject, transform.position, transform.rotation);
prefab.GetComponent<Renderer>().material.SetColor("_Color", Color.red);
}
public void lightSensor()
{
print("estas en la funcuion de lightSensor");
gameObject.GetComponent<Renderer>().sharedMaterial.color = Color.green;
}
//Sent to all game objects before the application is quit
//this is called when the user stops playmode.
private void OnApplicationQuit()
{
//reset all prefab color to default
gameObject.GetComponent<Renderer>().sharedMaterial.color = Color.white;
}
}
只需調用GetComponent<Renderer>().material.color
: Renderer.material
返回材質的實例,而不是共享的實例。
當渲染器包含多種材質時,可以使用相同的方法來調用GetComponent<Renderer>().materials[i]
而不是GetComponent<Renderer>().sharedMaterials[i]
。
附帶說明一下,由於您的腳本繼承自MonoBehaviour
,因此gameObject.GetComponent<>()
可以簡化為GetComponent<>()
。
希望這可以幫助,
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.