请选择 进入手机版 | 继续访问电脑版

马上加入IBC程序猿 各种源码随意下,各种教程随便看! 注册 每日签到 加入编程讨论群

C#教程 ASP.NET教程 C#视频教程程序源码享受不尽 C#技术求助 ASP.NET技术求助

【源码下载】 社群合作 申请版主 程序开发 【远程协助】 每天乐一乐 每日签到 【承接外包项目】 面试-葵花宝典下载

官方一群:

官方二群:

尝试用Unity3d制作一个王者荣耀(持续更新)->选择英雄

[复制链接]
查看2380 | 回复0 | 2019-9-17 11:32:38 | 显示全部楼层 |阅读模式

如果已经看过本章节:目次传送门:这是目次鸭~

1.场景搭建:

首先我们去AssetStore逛淘宝~~~

113435qye2vmrv0ypvz0el.png

我淘到的是这个资源,其他好看的场景(消耗不高的都行)。

然后我们导入了这个资源后,把资源根文件夹的名字改为Select,把Demo场景文件的名字改为Selection,我如许修改的emmm...

113436vphwhd7euph7ihr9.png

然后打开那个Demo场景,走到LightningSetting关闭雾结果(这个消耗有点大,关一下,你开心也可以不关的~):

113436tealzeanwgggna5a.png

然后我们就在场景里移动Main Camera到你喜好的好看的位置~

趁便创建个Reflection Probe(反射结果的):

113436pvqwnk2zw52k3k2r.png

前面是没加的,背面是加了的,区别有点小,仔细看右边的更美丽诶~~~

113436y8jeedws40mj0lw4.png
113437vnrx6n766xopnkyx.png

然后我们在场景中创建空对象,重新定名为你喜好的名字,用于展示英雄的脚色坐标的定位,我在里面放了个阿离并把相对坐标设置为零来测试站的位置是否准确(我这里面还有个光照是因为脸部比力暗,你可以自己调解光照的,对~说的就是你o(*^▽^*)o):

113438wbbxnsknb95inz8k.png

到此为止~我们的场景就搭建完毕了亲亲~

2.英雄资源的打包相关(重要!!!):

定名规则:我们可以看到,农药的AssetBundle定名结构是:英雄ID+皮肤编号(没有空格,比如说阿离的ID是199,这个花间舞是第二个皮肤,所以ID为1992,第一个默认皮肤不需要输入皮肤ID就199就好了)_英雄拼音_资源范例.assetbbundle。(下面可以看到廉颇ID是105,这个设定使得我们提资源非常方便~良心TX~):

113438c64vb69eeb9g6b94.jpg

然后我们也操持用这种规则来定名~

下面部门含有代码~

创建几个新文件夹在根工程目次下,路径是 ActorManager/Scripts,然后再在里面创建一个Csharp(即C#),名为ActorManager:

  1. /*
  2. * 编辑者:Miku酱
  3. * 版本:1
  4. * 初次编写日期:2019/09/15 13:53
  5. * 修改日期:2019/09/15 13:53
  6. * 强行加一行~~~
  7. */
  8. using System.Collections;
  9. using System.Collections.Generic;
  10. using UnityEngine;
  11. using LuoHao.AssetBundleManager;
  12. namespace LuoHao.Actor
  13. {
  14. public class ActorManager : MonoBehaviour
  15. {
  16. /// <summary>
  17. /// 脚色信息文件的列表
  18. /// </summary>
  19. [TextArea]
  20. public List<string> actorFileList = new List<string>();
  21. /// <summary>
  22. /// 全部的脚色信息
  23. /// </summary>
  24. public static Dictionary<int, ActorInfoData> allActor = new Dictionary<int, ActorInfoData>();
  25. private void Awake()
  26. {
  27. LoadAllActor();//加载
  28. DontDestroyOnLoad(this.gameObject);//切换场景不烧毁这个物体
  29. // Debug.Log(allActor[100].actorName);//测试
  30. }
  31. /// <summary>
  32. /// 加载脚色信息
  33. /// </summary>
  34. public bool LoadAllActor()
  35. {
  36. for(int i = 0; i < actorFileList.Count; i++)
  37. {
  38. //取得文件
  39. PackageForAssetBundle pfa= AssetBundleManager.AssetBundleManager.GetAssetBundle(actorFileList[i]);
  40. //加载资源
  41. GameObject[] gms = pfa.GetAssetBundle().LoadAllAssets<GameObject>();
  42. ActorInfo[] ai = gms[0].GetComponents<ActorInfo>();
  43. if (ai.Length == 0)//数组长度为0则返回错误
  44. {
  45. Debug.LogError("加载脚色信息文件失败!\n错误文件位置:"+actorFileList[i]);
  46. return false;
  47. }
  48. else
  49. {
  50. for (int i1 = 0; i1 < ai.Length; i1++)
  51. allActor.Add(ai[i1]._actorInfoData.actorID, ai[i1]._actorInfoData);
  52. //信息载入字典....
  53. }
  54. pfa.UnLoadAssetBundle(true);//卸载ab包
  55. }
  56. return true;
  57. }
  58. }
  59. /// <summary>
  60. /// 储存单个脚色信息的类
  61. /// </summary>
  62. [System.Serializable]//序列化,注意要用System定名空间下面的
  63. public class ActorInfoData
  64. {
  65. /// <summary>
  66. /// 脚色名字
  67. /// </summary>
  68. public string actorName = "英雄名字";
  69. /// <summary>
  70. /// 脚色拼音
  71. /// </summary>
  72. public string actorPinYin = "PinYin";
  73. /// <summary>
  74. /// 脚色ID
  75. /// </summary>
  76. public int actorID = 100;
  77. /// <summary>
  78. /// 屏蔽英雄
  79. /// </summary>
  80. public bool banActor = false;
  81. /// <summary>
  82. /// 脚色配景
  83. /// </summary>
  84. [TextArea]//这个是文本框,表现在编辑器的
  85. public string actorBG = "配景故事";
  86. /// <summary>
  87. /// 皮肤列表(第一个就是原皮,必填)
  88. /// </summary>
  89. public List<ActorSkin> actorSkins = new List<ActorSkin>();
  90. }
  91. /// <summary>
  92. /// 储存单个皮肤的
  93. /// </summary>
  94. [System.Serializable]//序列化
  95. public class ActorSkin
  96. {
  97. /// <summary>
  98. /// 皮肤名字
  99. /// </summary>
  100. public string skinName = "皮肤名字";
  101. /// <summary>
  102. /// 皮肤展示模子资源路径
  103. /// </summary>
  104. [TextArea]//这个是文本框,表现在编辑器的
  105. public string skinShowModelPath = "皮肤展示模子资源路径";
  106. /// <summary>
  107. /// 皮肤对战模子资源路径
  108. /// </summary>
  109. [TextArea]//这个是文本框,表现在编辑器的
  110. public string skinBattleModelPath = "皮肤对战模子资源路径";
  111. /// <summary>
  112. /// 皮肤展示殊效资源路径
  113. /// </summary>
  114. [TextArea]//这个是文本框,表现在编辑器的
  115. public string skinShowEffectPath = "皮肤展示殊效资源";
  116. /// <summary>
  117. /// 皮肤对战殊效资源路径
  118. /// </summary>
  119. [TextArea]//这个是文本框,表现在编辑器的
  120. public string skinBattleEffectPath = "皮肤对战殊效资源";
  121. }
  122. }
复制代码

脚本ActorInfo(承载信息的载体):

  1. 1 /*
  2. 2 * 编辑者:Miku酱
  3. 3 * 版本:1
  4. 4 * 初次编写日期:2019/09/15 13:53
  5. 5 * 修改日期:2019/09/15 13:53
  6. 6 * 强行加一行~~~
  7. 7 */
  8. 8
  9. 9 using System.Collections;
  10. 10 using System.Collections.Generic;
  11. 11 using UnityEngine;
  12. 12
  13. 13 namespace LuoHao.Actor {
  14. 14 public class ActorInfo : MonoBehaviour
  15. 15 {
  16. 16 [Header("脚色信息")]
  17. 17 public ActorInfoData _actorInfoData;
  18. 18 }
  19. 19 }
复制代码

创建脚色信息数据库:

新建一个物体,并挂上脚本ActorInfo,修改信息(你开心就好随便想改啥就改啥~),然后制作成预制体而且设置标签:

113438b1iu14644muu6m4y.png
113439rbbbbh7bhjo4jhbr.png

然后在点击工具栏的打包AssetBundle的按钮,打包这个预制体,末了我们在场景中随便找个物体挂上ActorManager,并增长一个路径(就是你预制体标签的名字加后缀,标签默认是全部小写,我们设置的时间巨细写不影响文件读取):

113439rmxlxsh5g7hdg5p1.png

如果运行后Unity编辑器毫无波涛乃至有点想笑的话那就说明这步OK啦~

施工了一个中午emmm~头发又少了几根,下一部门再见咯~

如果已经看过本章节:目次传送门:这是目次鸭~







来源:https://www.cnblogs.com/Miku-CEB-Bug/archive/2019/09/15/11522216.html
C#论坛 www.ibcibc.com IBC编程社区
C#
C#论坛
IBC编程社区
*滑块验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则