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

上节内容写了Actor管理器,那么这一节让我们先创建一个角色。(此章节开始加速...)

1.制作角色展示AssetBundle:

提取农药某个展示模型(Show)资源(这步具体去百度),然后再把模型制作成预制体,AssetBundle命名规则按照农药的(ID_游戏拼音_资源类型.assetbundle):

制作UI预制体,还是得提取或者去农药官网 pvp.qq.com 的壁纸中心下载原图截取(一个是图标一个是加载时候用到的):

创建一个空物体,并挂上ActorInfo组件,制作成预制体并输入数据(虽然标签以及打包的文件都是小写的,但按照路径读取文件的时候不会区分大小写,为了好看于是可以大写):

到这步先不要打包,后面还有小部件需要打包的。

2.拼UI(最舒适的部分~):

创建一个滚动视图,并且在Content位置增加自动布局组件,再创建空对象改名Mode,里面存放两个按钮用来切换皮肤和英雄选择,如图:

拉几下几下位置,最终效果:

然后我们制作一个预制体,用于动态生成(结构是一个空物体里面有个按钮(已把里面文字删去)和一个 名字 的 文本显示组件):

把预制体粘贴到Content里面测试有没有问题(是否自动对齐):

测试放上去的内容记得删除,设置预制体标签:

然后我们写一个代码用于管理选择英雄的UI响应的(前SelectionListManager)和 按钮回调的(后HeroItemButton):

 /*
* 编辑者:Miku酱
* 版本:1
* 首次编写日期:2019/09/20 00:05
* 修改日期:2019/09/20 00:05
* 强行加一行~~~
*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using LuoHao.Actor;
using UnityEngine.UI;
using LuoHao.AssetBundleManager; namespace LuoHao.PVP.Selection
{
public class SelectionListManager : MonoBehaviour
{
public Transform testPos; /// <summary>
/// 接口
/// </summary>
public static SelectionListManager selectionListManager; /// <summary>
/// UI的AB包路径
/// </summary>
static string uiPath = "UGUI_Selection_0.assetbundle";
[Header("父对象")]
public Transform UIparent;
/// <summary>
/// 当前选择的英雄ID
/// </summary>
private int nowSelectionID = -; GameObject testGM = null;
/// <summary>
/// 设置ID
/// </summary>
/// <param name="id">id</param>
public void SetSelectionID(int id)
{
if (nowSelectionID == id) return;
nowSelectionID = id;
if (testGM != null) Destroy(testGM);
Transform tr = Instantiate(AssetBundleManager.AssetBundleManager.
GetAssetBundle(ActorManager.allActor[id].actorSkins[].skinShowModelPath+ ".assetbundle")
.GetAssetBundle().LoadAllAssets<GameObject>()[],testPos).transform;
tr.localPosition = Vector3.zero;
} public int GetSelectionID()
{
return nowSelectionID;
} private void Awake()
{
selectionListManager = this;
nowSelectionID = -;//重置ID
}
// Start is called before the first frame update
private void Start()
{
LoadList();
} // Update is called once per frame
private void Update()
{ } private void LoadList()
{
//取得预制体
GameObject btn =AssetBundleManager.AssetBundleManager.
GetAssetBundle(uiPath).GetAssetBundle().LoadAsset<GameObject>("HeroBtn");
List<ActorInfoData> infos = new List<ActorInfoData>(ActorManager.allActor.Values);//取得信息...
for(int i = ; i < infos.Count; i++)//创建UI
{
PackageForAssetBundle sprite = AssetBundleManager.AssetBundleManager.
GetAssetBundle(infos[i].actorSkins[].skinIconPath+".assetbundle");
//取得图标资源
Transform tr = Instantiate(btn, UIparent).transform;
tr.GetComponentInChildren<Text>().text = infos[i].actorName;//设置名字
tr.GetComponentInChildren<Image>().sprite= sprite.GetAssetBundle().LoadAllAssets<Sprite>()[]; //设置图标
tr.GetComponentInChildren<HeroItemButton>().heroID = infos[i].actorID;//设置ID
sprite.UnLoadAssetBundle(false);//卸载
}
}
}
}
 /*
* 编辑者:Miku酱
* 版本:1
* 首次编写日期:2019/09/20 00:05
* 修改日期:2019/09/20 00:05
* 强行加一行~~~
*/
using System.Collections;
using System.Collections.Generic;
using UnityEngine; namespace LuoHao.PVP.Selection
{
public class HeroItemButton : MonoBehaviour
{
/// <summary>
/// 这个由代码来设置
/// </summary>
[HideInInspector] public int heroID = ;
public void OnClick()
{
SelectionListManager.selectionListManager.SetSelectionID(heroID);//调用更改ID }
}
}

然后在回到按钮,挂上HeroItemButton并设置按钮回调OnClick:

再再选择英雄的场景中创建一个空物体(SelectionListManager),拖入展示位置和滚动视图的Content:

3.试运行:

这时候我们点击一下AssetBundle打包,让程序飞一会~

在一个用于测试的空对象(没有就创建)挂上ActorManager:

并输入刚刚创建的阿离的ActorInfo文件的位置(这里就要带后缀了,可以通过修改代码来免除加后缀):

然后运行:

我这边因为临时写了个动画的管理的所以有出场动画展示,这个后面才讲。

出现了动图里面的效果就说明成功啦!

不早了( 2019/09/20 00:30),下一节再见。

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

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

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

    如果已经看过本章节:目录传送门:这是目录鸭~ 1.场景搭建: 首先我们去AssetStore逛淘宝~~~ 我淘到的是这个资源,其他好看的场景(消耗不高的都行). 然后我们导入了这个资源后,把资源根文件 ...

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

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

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

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

  4. 【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能

    [背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是 ...

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

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

  6. 一个简单的批量更新oracle 数据库中 最近的服务商名称的数据

    有一个需求是这样的,我们需要更新数据库中的数据,数据时这样的 1.大约50万以上 2. 数据中有较多的重复数据 3. 需要将表中最近的代理商的名称赋值给行中的服务商名称 4. 代理商的名称可能有多个, ...

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

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

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

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

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

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

随机推荐

  1. 数据库炸了——是谁动了我的wait_timeout

    1.起因 隐约听到坐在我对面的测试说测试环境的接口有问题 他们一番商讨后,朝我这边反馈说,现在测试环境的接口报504 我条件反射的回了句那是接口超时,再多试几次(测试环境的性能比较差,尤其是数据库,经 ...

  2. ansible批量自动配置Juniper

    一.需求 有几台新上线的Juniper,需要批量配置下syslog,ntp,snmp基础配置 二.拓扑 三.实施步骤 1.读取配置并输出作为初步核查 2.把配置载入网络其中一台网络设备中,并做一个sh ...

  3. Visual Studio 2015&2017 key

    Visual Studio 2015 key Key : HMGNV-WCYXV-X7G9W-YCX63-B98R2 Visual Studio Enterprise 2015 Key :HM6NR- ...

  4. [HAOI2015]树上染色(树上dp)

    [HAOI2015]树上染色 这种要算点对之间路径的长度和的题,难以统计每个点的贡献.这个时候一般考虑算每一条边贡献了哪些点对. 知道这个套路以后,那么这题就很好做了. 状态:设\(dp[u][i]\ ...

  5. [ PyQt入门教程 ] PyQt+socket实现远程操作服务器

    来需求了..干活啦.. 需求内容 部分时候由于缓存刷新.验证码显示不出来或者浏览器打不开或者打开速度很慢等原因,导致部分测试同事不想使用浏览器登录服务器执行命令.期望有小工具可以替代登录浏览器的操作, ...

  6. Zabbix监控华为路由器配置

    zabbix监控华为路由器 一.配置路由器界面: 开启snmpv2c功能,同时勾选v2c版本(不要勾v1,不安全,其实v2也不安全,如果很注重安全的话,一定要只配置v3). 手里没有路由器登录账号,大 ...

  7. Spring源码剖析开篇:什么是Spring?

    在讲源码之前,先让我们回顾一下一下Spring的基本概念,当然,在看源码之前你需要使用过spring或者spirngmvc. Spring是什么 Spring是一个开源的轻量级Java SE(Java ...

  8. 「每日五分钟,玩转JVM」:线程独占区

    前言 如果我们对计算机组成有所了解,那么我们一定会知道在计算机中有一块儿特殊的区域,称之为寄存器,寄存器包括了指令寄存器和程序计数器,这两样位于CPU中,作为程序运行的大脑来控制程序的运行和流转. 而 ...

  9. 淘宝自动登录2.0,新增Cookies序列化

    前段时间时间为大家讲解了如何使用requests库模拟登录淘宝,而今天我们将对该功能进行丰富.所以我们把之前的那个版本定为1.0,而今天修改的版本定为2.0.版本的地跌意味着功能的升级,那今天的2.0 ...

  10. Linux 用户和组 权限管理 常用命令与参数

    ========================================================================== 1.基本概念: 所有者 : 一般为文件的创建者,谁 ...