一旦創建完成預製,每預製1個動畫,那麼你可以使用風箱的方法來動態創建實例:
讓說,你有CutsceneManager這樣的腳本:
class CutsceneManager : MonoBehaviour {
public GameObject InstantiateResource(string folder, string name)
{
GameObject resource = Instantiate<GameObject>(Resources.Load<GameObject>(folder + "/" + name));
if (resource == null)
{
Debug.LogErrorFormat("Cannot find resource {0} in {1}", name, folder);
return null;
}
resource.name = name;
return resource;
}
}
使用它的最簡單方法是將其附加到Empty對象。然後你就可以在其他腳本中,你將需要表現出過場,像這樣營造經理公共變量:
class SomeOtherScript : MonoBehaviour {
public CutsceneManager CutsceneManager;
}
這將讓你拖&下降CutsceneManager空到每個在你需要它的腳本。通過這種方式,您可以爲所有類使用1個cutscenemanager實例。
現在,在地方,你將需要發揮custscene,實例:
class SomeOtherScript : MonoBehaviour {
public CutsceneManager CutsceneManager;
public void PlayMyCutscene() {
GameObject cutscene = CutsceneManager.InstantiateResource("Cutscenes", "SomeOtherCutscene");
cutscene.setActive(true); // Or whetever other method to fire it off
}
}
文件夾結構,你需要有:Assets\Resources\Cutscenes
過場動畫會被稱爲:SomeOtherCutscene.prefab
注意,當你實例化時,不需要包含.prefab - Unity框架將「知道」併爲你添加它。
您可以創建每個過場動畫作爲預製件給它一些參考名稱,然後實例化您需要的預製件 - 如果有很多過場動畫,則可以節省大量內存。 –
@RafalZiolkowski我認爲你應該把它當作答案。使所有gameobjects預製和[加載](https://stackoverflow.com/a/44832347/3785314)他們與資源或assetbundles應該做到這一點。 – Programmer
@Programmer - 回家後我會做,包括代碼示例 - 我不是日常工作中的團隊開發人員:) –