赞
踩
小时候,快乐是一个小小的风筝,我在地上,风筝在天上。
地图的加载其实很简单,涉及到自动寻路,烘焙,遮挡剔除,动态加载,更新等,所以这里建议把地图场景整体打包成assetbundle,然后热更下载加载即可。
直接上代码:
在淘宝上下载了LOL的峡谷地图,加载进来设置好贴图,然后就是做自动寻路了
我是通过自己放置了面片的方式设置,原始地图是公共区域和野区。
1、2、3分别代表上路中路下路,4代表野区,方便后面做兵线的自动寻路。
- /// <summary>
- /// 编译资源
- /// </summary>
- /// <param name="targetPath">目标位置</param>
- /// <param name="prefabs">预制体</param>
- /// <param name="scenes">场景</param>
- /// <param name="buildTarget">目标平台</param>
- [MenuItem("开始打包/打包Scenes")]
- public static void BuildingScenes()
- {
- try
- {
- //清空一下缓存
- Caching.ClearCache();
- UnityEngine.Object[] selects = Selection.GetFiltered(typeof(UnityEngine.Object), SelectionMode.DeepAssets);
- //添加资源
- for (int i = 0; i < selects.Length; i++)
- {
- //获得用户选择的路径的方法,可以打开保存面板(推荐)
- //string path = EditorUtility.SaveFilePanel("保存资源", "SS", "" + selects[i].name, "unity3d");
- string[] path = new string[] { AssetDatabase.GetAssetPath(selects[i]) };
- Debug.Log("Path:" + path[0]);
- string filepath = Environment.CurrentDirectory + "/DownLoad/Unity3d/" + selects[i].name + ".unity3d";
- try
- {
- BuildPipeline.BuildPlayer(path, filepath, BuildTarget.StandaloneWindows64, BuildOptions.BuildAdditionalStreamedScenes);
- Debug.Log("场景打包成功");
- }
- catch (System.Exception ex)
- {
- Debug.Log("场景打包失败:" + ex.ToString());
- }
- }
- }
- catch (UnityException e)
- {
- Debug.Log("场景打包失败:" + e.ToString());
- }
- //刷新编辑器(不写的话要手动刷新,否则打包的资源不能及时在Project视图内显示)
- AssetDatabase.Refresh();
- }
这个是打包出来的三个场景,包含峡谷5v5,极地大乱斗断桥,还有那个3v3的地图
这一步,就不多做赘述了,现在移除了3v3的,其它就根据不同游戏模式加载不同地图就好了
- //动态加载本地场景
- var req = AssetBundle.LoadFromFileAsync(URL);
- req.allowSceneActivation = false;
- while (req.progress < 0.99f)
- {
- yield return null;
- }
- yield return req;
- req.allowSceneActivation = true;
- assetBundle = req.assetBundle;
- string[] scenes = assetBundle.GetAllScenePaths();
- string scenespath = Path.GetFileNameWithoutExtension(scenes[0]);
- SceneManager.LoadScene(scenespath, LoadSceneMode.Additive);
- Scene scene = SceneManager.GetSceneByName(scenespath);
- action(scene);
- yield return null;
- if (assetBundle != null)
- {
- assetBundle.Unload(false);
- }
最后,祝大家游戏愉快,开发愉快!!
↓↓↓↓
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。