从Unity资产束中实例化光子场景对象

问题描述 投票:0回答:1

摘要:我需要使用PhotonNetwork.InstantiateSceneObject(string prefab_name)实例化AssetBundle中的对象。

在运行时,我从互联网上下载了包含一堆预制件的Unity资产捆绑包。然后,我想使用PhotonNetwork.InstantiateSceneObject实例化某些预制件,但是此函数仅接受预制件名称字符串,但是所有预制件都在资产束中,并且仅当您首先将对象加载为预制件然后实例化时才能访问它。您不能直接将其实例化为字符串名称,就像它在Resource文件夹中一样。

AssetBundle ab=AssetBundle.LoadFromFile("c:\assets\bundlename.android");
var prefab=ab.LoadAsset("networked_monster.prefab");

PhotonNetwork.InstantiateSceneObject("networked_monster.prefab");  <<------ this wont work, cant access asset bundle from Photon

是否有办法解开资产捆绑包中的所有预制件和其他对象,使其看起来好像它们都位于资源文件夹中一样???然后,我将能够像这样访问它们

PhotonNetwork.InstantiateSceneObject("networked_monster.prefab"); 
AudioClip audio=Resources.Load("BangZoom") as AudioClip; 

这里BangZoom是一个位于资产捆绑包内的wav文件,我需要它像在资源文件夹中一样显示。

也“ networked_monster.prefab”在资产捆绑包中,我需要它像在资源文件夹中一样显示,以便我可以按名称实例化它。

[在完成这些资产后,我又该如何卸载和释放所有这些资产?

unity3d photon
1个回答
0
投票

我刚刚在我们的论坛上回答了同样的问题:https://forum.photonengine.com/discussion/14956/photonnetwork-instantiatesceneobject

基本上,您只需实现自己的IPrefabPool接口,然后就可以按照想要的方式随意实例化网络对象。

请查看默认实现(例如punclasses.cs中的DefaultPool类)。

再见,

吉恩

对于卸载,我不确定,最好在Unity论坛或UA上询问

© www.soinside.com 2019 - 2024. All rights reserved.