[英]how do i get a game object to apply changes to a prefab in script
使用Unity 3D編輯器。 我有一個物體在與其他物體碰撞時會改變顏色,這一切都有效,但是當改變場景時,球會恢復到默認顏色。 所以我在改變顏色時需要球來通過腳本更新預制件,這樣其他場景中對象的其他實例也會改變顏色。 這是我為變色編寫的代碼:
using UnityEngine;
using System.Collections;
public class colourpicker : MonoBehaviour {
public GameObject whiteblock;
public GameObject limegreentintblock;
public GameObject cyantintblock;
public GameObject redtintblock;
public GameObject yellowtintblock;
public GameObject player;
public Material limegreentint;
public Material redtint;
public Material cyantint;
public Material yellowtint;
public Material white;
void OnTriggerEnter(Collider other)
{
if (other.gameObject == whiteblock)
{
renderer.material = white;
}
else if (other.gameObject == redtintblock)
{
renderer.material = redtint;
}
else if (other.gameObject == limegreentintblock)
{
renderer.material = limegreentint;
}
else if (other.gameObject == cyantintblock)
{
renderer.material = cyantint;
}
else if (other.gameObject == yellowtintblock)
{
renderer.material = yellowtint;
}
}
}
謝謝你提前幫助:)
如果我是你,我會創建一個帶有空游戲對象的靜態類,您可以在其中保存對象顏色的狀態。 在Ball的Initialize部分中,您應該檢查此靜態類的變量(必須是靜態的)是否與Initial狀態不同,然后將靜態變量的顏色分配給Ball對象。 這個LINK教你如何實現它(你必須改變一些東西來做你想要的東西)
編輯
在靜態類中,您可以創建類似的東西
public static Material BallMaterial = null; // or you can assign a Material that will act as InitialState
之后,在您的代碼中,當您將新材質指定給球時,您還將新材質指定給BallMaterial ,然后在加載新場景時檢查BallMaterial是否具有與其InitialState不同的值(或null )。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.