因此,我一直在尝试将资产捆绑软件与unity的unet系统配合使用。每当我从Assetbundle中加载播放器预制件并将其设置为NetworkManager中的playerPrefab并尝试加入游戏时,都会出现以下错误:无法生成服务器对象,您是否忘记将其添加到NetworkManager?托管游戏的玩家(服务器)不会发生这种情况
当我使用Resources.Load()加载播放器预制件时,它可以很好地工作,但是我不能使用Resources.Load()。使用ClientScene在代码中注册播放器预制组件。RegisterPrefab(myPlayerPrefab)都不起作用。
这是我用来加载我的资产捆绑并让玩家预制的东西: 私有静态字典loadingAssets = new Dictionary();
public static void LoadAssets()
{
//Bundle: player
LoadAssetBundle("player", Directory.GetCurrentDirectory() + "/Assets/Resources/AssetBundles/");
}
private static void LoadAssetBundle(string bundleName, string bundleUrl)
{
AssetBundle currentBundle = AssetBundle.LoadFromFile(bundleUrl + bundleName);
Object[] bundleAssets = currentBundle.LoadAllAssets();
foreach(Object bundleAsset in bundleAssets)
{
loadedAssets.Add(bundleAsset.name, bundleAsset);
}
}
public static Object GetAsset(string assetName)
{
return loadedAssets[assetName];
}
这是我在NetworkManager中设置播放器预制件的方式: networkManager.playerPrefab = AssetHandler3.GetAsset(“ Player”)作为GameObject;
我希望能够使用assetBundles在NetworkManager中设置我的playerPrefab,而不会出现服务器未能生成对象的错误。如果无法做到这一点,我有另一种方法可以完成这项工作,但我需要一种无需使用Resources.Load();即可在路径上获得预制件的方法。
谢谢!