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

1.场景搭建:

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

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

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

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

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

顺便创建个Reflection Probe(反射效果的):

前面是没加的,后面是加了的,区别有点小,仔细看右边的更漂亮诶~~~

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

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

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

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

然后我们也打算用这种规则来命名~

下面部分含有代码~

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

 /*
* 编辑者:Miku酱
* 版本:1
* 首次编写日期:2019/09/15 13:53
* 修改日期:2019/09/15 13:53
* 强行加一行~~~
*/ using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LuoHao.AssetBundleManager; namespace LuoHao.Actor
{
public class ActorManager : MonoBehaviour
{
/// <summary>
/// 角色信息文件的列表
/// </summary>
[TextArea]
public List<string> actorFileList = new List<string>();
/// <summary>
/// 全部的角色信息
/// </summary>
public static Dictionary<int, ActorInfoData> allActor = new Dictionary<int, ActorInfoData>(); private void Awake()
{
LoadAllActor();//加载
DontDestroyOnLoad(this.gameObject);//切换场景不销毁这个物体
// Debug.Log(allActor[100].actorName);//测试 }
/// <summary>
/// 加载角色信息
/// </summary>
public bool LoadAllActor()
{
for(int i = ; i < actorFileList.Count; i++)
{
//取得文件
PackageForAssetBundle pfa= AssetBundleManager.AssetBundleManager.GetAssetBundle(actorFileList[i]);
//加载资源
GameObject[] gms = pfa.GetAssetBundle().LoadAllAssets<GameObject>();
ActorInfo[] ai = gms[].GetComponents<ActorInfo>();
if (ai.Length == )//数组长度为0则返回错误
{
Debug.LogError("加载角色信息文件失败!\n错误文件位置:"+actorFileList[i]);
return false;
}
else
{
for (int i1 = ; i1 < ai.Length; i1++)
allActor.Add(ai[i1]._actorInfoData.actorID, ai[i1]._actorInfoData);
//信息载入字典....
}
pfa.UnLoadAssetBundle(true);//卸载ab包
} return true;
} } /// <summary>
/// 储存单个角色信息的类
/// </summary>
[System.Serializable]//序列化,注意要用System命名空间下面的
public class ActorInfoData
{
/// <summary>
/// 角色名字
/// </summary>
public string actorName = "英雄名字";
/// <summary>
/// 角色拼音
/// </summary>
public string actorPinYin = "PinYin";
/// <summary>
/// 角色ID
/// </summary>
public int actorID = ;
/// <summary>
/// 屏蔽英雄
/// </summary>
public bool banActor = false;
/// <summary>
/// 角色背景
/// </summary>
[TextArea]//这个是文本框,显示在编辑器的
public string actorBG = "背景故事"; /// <summary>
/// 皮肤列表(第一个就是原皮,必填)
/// </summary>
public List<ActorSkin> actorSkins = new List<ActorSkin>(); }
/// <summary>
/// 储存单个皮肤的
/// </summary>
[System.Serializable]//序列化
public class ActorSkin
{
/// <summary>
/// 皮肤名字
/// </summary>
public string skinName = "皮肤名字";
/// <summary>
/// 皮肤展示模型资源路径
/// </summary>
[TextArea]//这个是文本框,显示在编辑器的
public string skinShowModelPath = "皮肤展示模型资源路径";
/// <summary>
/// 皮肤对战模型资源路径
/// </summary>
[TextArea]//这个是文本框,显示在编辑器的
public string skinBattleModelPath = "皮肤对战模型资源路径";
/// <summary>
/// 皮肤展示特效资源路径
/// </summary>
[TextArea]//这个是文本框,显示在编辑器的
public string skinShowEffectPath = "皮肤展示特效资源";
/// <summary>
/// 皮肤对战特效资源路径
/// </summary>
[TextArea]//这个是文本框,显示在编辑器的
public string skinBattleEffectPath = "皮肤对战特效资源";
/// <summary>
/// 皮肤原画位置
/// </summary>
[TextArea]//这个是文本框,显示在编辑器的
public string skinBannerPath = "皮肤原画位置";
/// <summary>
/// 皮肤小图标位置
/// </summary>
[TextArea]//这个是文本框,显示在编辑器的
public string skinIconPath = "皮肤小图标位置";
}
}

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

 /*
* 编辑者:Miku酱
* 版本:1
* 首次编写日期:2019/09/15 13:53
* 修改日期:2019/09/15 13:53
* 强行加一行~~~
*/ using System.Collections;
using System.Collections.Generic;
using UnityEngine; namespace LuoHao.Actor {
public class ActorInfo : MonoBehaviour
{
[Header("角色信息")]
public ActorInfoData _actorInfoData;
}
}

创建角色信息数据库:

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

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

这步加载没错误就OK了,记得删除测试用的Test对象,请看下一节。

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

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

[1]尝试用Unity3d制作一个王者荣耀(持续更新)->选择英雄-(上)的更多相关文章

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

    如果已经看过本章节:目录传送门:这是目录鸭~ 上节内容写了Actor管理器,那么这一节让我们先创建一个角色.(此章节开始加速...) 1.制作角色展示AssetBundle: 提取农药某个展示模型(S ...

  2. [0]尝试用Unity3d制作一个王者荣耀(持续更新)->游戏规划

    太得闲了于是想写个农药,虽然可能会失败但是还是要试一试. 因为是自学的不是Unity专业的可能表达语言会有些不标准!望见谅! 结构: 以组件式(比如说摇杆控制和玩家部分的编写是分离的,可以自由拼装)作 ...

  3. [1]尝试用Unity3d制作一个王者荣耀(持续更新)->AssetBundle管理器

    如果已经看过本章节:目录传送门:这是目录鸭~ 1.AssetBundleManager: 首先我们创建一个文件夹,叫AssetBundleManager,再创建Csharp(即C#)脚本,名为Asse ...

  4. 尝试用kotlin做一个app(二)

    导航条 我想实现的效果是这样的 类似于ViewPager的效果,子类导航页面可以滑动,当滑动某个子类导航页面,导航线会平滑地向父类导航移动 ·添加布局 <!--导航分类:编程语言/技术文档/源码 ...

  5. 尝试用kotlin做一个app(五)

    JSP后台管理系统 开发工具是IntelliJ IDEA+tomcat+mysql5.6.19+mysql-connector-java-5.1.48.jar+easyui+kindeditor 之前 ...

  6. 尝试用kotlin做一个app(四)

    本来是应该为主页加载数据库数据了,但是想着做后台,之前写jsp后台写吐了,所以先拖几天.把之前的代码完善一下,或者添加些新内容. ...... 多个fragment切换卡顿 首先修正一个bug.从主页 ...

  7. 尝试用kotlin做一个app(三)

    新闻列表 添加新闻列表可以使用RecyclerView.但是有个问题,RecyclerView只会在内部滚动,不会带动整个屏幕滚动.所以在原根布局外层添加androidx.core.widget.Ne ...

  8. 尝试用kotlin做一个app(一)

    1.先添加一下anko库 依赖:implementation "org.jetbrains.anko:anko:$anko_version" 版本:ext.anko_version ...

  9. 尝试用kotlin做一个app(写在前面)

    学kotlin的目的好像就是做一个app,不一定有什么想做的项目,只是单纯想掌握这一门技术,确切地说只是单纯想学会做app.对于概念的东西,我也没兴趣深究,用得到的学一下,用不到的,就算了.我也不知道 ...

随机推荐

  1. python第一课--基础知识

    python简介 Python是一种计算机程序设计语言.是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的 ...

  2. mybatis批量更新策略

    我们知道循环中操作db会导致连接数满,严重影响数据库性能.所以在对db进行DQL与DML时,根据业务逻辑尽量批量操作,这里我们介绍下使用mybatis批量更新mysql的两种方式. 方式一: < ...

  3. 优雅的在WinForm/WPF/控制台 中使用特性封装WebApi

    优雅的在WinForm/WPF/控制台 中使用特性封装WebApi 说明 在C/S端作为Server,建立HTTP请求,方便快捷. 1.使用到的类库 Newtonsoft.dll 2.封装 HttpL ...

  4. 分布式存储——ceph 的 python 基础接口

    python 使用 boto 库完成分布式存储读.写.判断接口 import boto import boto.s3.connection from boto.s3.key import Key im ...

  5. 开发规范 小白进阶 python代码规范化

    开发规范 软件开发,规范项目的目录结构,代码规范,遵循 PeP8规范等等,让你更加清晰的,合理开发 一功能分类(文件名) settings.py配置文件 配置文件放一些静态参数, 划归固定的路径,文件 ...

  6. RedHat 6.5换源

    https://wenku.baidu.com/view/5b87fb42c77da26924c5b03b.html

  7. 构建docker虚拟化平台

    安装epel-release扩展包 yum install epel-release -y 安装docker yum install docker-ce 启动docker systemctl star ...

  8. mac下面有epoll?

    没有的,但是mac下面有kqueue,跟epoll原理是差不多的. 这个是没办法的,如果实在需要,就用Ubuntu吧,这个也可以无缝迁移. 更多资源,更多文章由小白技术社提供(是我啦)

  9. Python Web Flask源码解读(三)——模板渲染过程

    关于我 一个有思想的程序猿,终身学习实践者,目前在一个创业团队任team lead,技术栈涉及Android.Python.Java和Go,这个也是我们团队的主要技术栈. Github:https:/ ...

  10. HDU5988 - 2016icpc青岛 - G - Coding Contest 费用流(利用对数化乘为加

    HDU5988 题意: 有n个区域,每个区域有s个人,b份饭.现在告诉你每个区域间的有向路径,每条路有容量和损坏路径的概率.问如何走可以使得路径不被破坏的概率最小.第一个人走某条道路是百分百不会损坏道 ...