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

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. 基于hprose-golang创建RPC微服务

    Hprose(High Performance Remote Object Service Engine) 是一款先进的轻量级.跨语言.跨平台.无侵入式.高性能动态远程对象调用引擎库.它不仅简单易用, ...

  2. jQuery学习和知识点总结归纳

    jQuery目前在Web前端开发所占的比重越来越高,在我们jQuery学习和开发的过程中都会去使用.jQuery帮我们解决了浏览器之间JS一些不兼容的地方和简化了原生JS对DOM的操作.下面把PHP程 ...

  3. struts的上传下载

    文件上传 添加jar包 commons-io-1.3.2.jar commons-fileupload-1.2.1.jar 前台页面 form表单 method值为post 添加"encty ...

  4. pythonday02基础与运算符

    今日概要 1.循环 2.字符串格式化 3.运算符 4.编码 if的嵌套 score = input('请输入成绩') score_int = int(score) if score_int >= ...

  5. 为什么双重检查锁模式需要 volatile ?

    双重检查锁定(Double check locked)模式经常会出现在一些框架源码中,目的是为了延迟初始化变量.这个模式还可以用来创建单例.下面来看一个 Spring 中双重检查锁定的例子. 这个例子 ...

  6. Winform 自定义文本框

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  7. 解决 Nginx 代理Apex慢的问题

    前不久用 Nginx 代理 Oracle 的 Apex 速度非常慢,我之前Nginx 配置如下: server{ listen 80; server_name localhost; client_ma ...

  8. 关于阿里云Mysql分页查询不走索引的问题

    需要修改阿里云中的MYSQL 配置参数 : eq_range_index_dive_limit 阿里云上默认是 10 , 这个参数 表示 in 查询 条件超过 10 个 就不走索引,走全表扫描.如果我 ...

  9. idea + springboot 的java后台服务器通过小米推送

    public class XiaomiPush { // 1.小米推送(我只推送Android且只应用regId发起推送,所以下面只有推送Android的代码 private static final ...

  10. 0807 创建vue实例以及vue的基础指令

    lession1 1.Vue的了解   渐进式框架   作者:尤雨溪     mvvm 2.创建vue实例 引入<script src="vue.js"><scr ...