簡體   English   中英

如何讓游戲對象將更改應用於腳本中的預制件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM