[1]尝试用Unity3d制作一个王者荣耀(持续更新)->选择英雄-(上)
如果已经看过本章节:目录传送门:这是目录鸭~
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制作一个王者荣耀(持续更新)->选择英雄-(上)的更多相关文章
- [3]尝试用Unity3d制作一个王者荣耀(持续更新)->选择英雄-(中)
如果已经看过本章节:目录传送门:这是目录鸭~ 上节内容写了Actor管理器,那么这一节让我们先创建一个角色.(此章节开始加速...) 1.制作角色展示AssetBundle: 提取农药某个展示模型(S ...
- [0]尝试用Unity3d制作一个王者荣耀(持续更新)->游戏规划
太得闲了于是想写个农药,虽然可能会失败但是还是要试一试. 因为是自学的不是Unity专业的可能表达语言会有些不标准!望见谅! 结构: 以组件式(比如说摇杆控制和玩家部分的编写是分离的,可以自由拼装)作 ...
- [1]尝试用Unity3d制作一个王者荣耀(持续更新)->AssetBundle管理器
如果已经看过本章节:目录传送门:这是目录鸭~ 1.AssetBundleManager: 首先我们创建一个文件夹,叫AssetBundleManager,再创建Csharp(即C#)脚本,名为Asse ...
- 尝试用kotlin做一个app(二)
导航条 我想实现的效果是这样的 类似于ViewPager的效果,子类导航页面可以滑动,当滑动某个子类导航页面,导航线会平滑地向父类导航移动 ·添加布局 <!--导航分类:编程语言/技术文档/源码 ...
- 尝试用kotlin做一个app(五)
JSP后台管理系统 开发工具是IntelliJ IDEA+tomcat+mysql5.6.19+mysql-connector-java-5.1.48.jar+easyui+kindeditor 之前 ...
- 尝试用kotlin做一个app(四)
本来是应该为主页加载数据库数据了,但是想着做后台,之前写jsp后台写吐了,所以先拖几天.把之前的代码完善一下,或者添加些新内容. ...... 多个fragment切换卡顿 首先修正一个bug.从主页 ...
- 尝试用kotlin做一个app(三)
新闻列表 添加新闻列表可以使用RecyclerView.但是有个问题,RecyclerView只会在内部滚动,不会带动整个屏幕滚动.所以在原根布局外层添加androidx.core.widget.Ne ...
- 尝试用kotlin做一个app(一)
1.先添加一下anko库 依赖:implementation "org.jetbrains.anko:anko:$anko_version" 版本:ext.anko_version ...
- 尝试用kotlin做一个app(写在前面)
学kotlin的目的好像就是做一个app,不一定有什么想做的项目,只是单纯想掌握这一门技术,确切地说只是单纯想学会做app.对于概念的东西,我也没兴趣深究,用得到的学一下,用不到的,就算了.我也不知道 ...
随机推荐
- (2019版本可用)【idea的安装,激活,设置,卸载】
前言 也差不多也可以使用简单快捷的idea软件了,相对于elicpse而言的话,idea是非常好用的,虽然现在涉及不是很广. 什么是idea? IDEA 全称IntelliJ IDEA,是用于java ...
- 做梦也没有想到:Windows 上的 .NET Core 表现更糟糕
昨天晚上 18:15 左右我们发布了跑在 Windows 上 .NET Core 博客系统,本想与 .NET Framework 版进行同“窗”的较量,结果刚发布上线就发现 CPU 占用异常高,发布不 ...
- 洛谷 P3413 SAC#1 - 萌数
题意简述 求l~r之间存在长度至少为2的回文子串的正整数的个数 题解思路 数位DP 注意到有偶数长度的回文串必有长度为2的回文串,有奇数长度的回文串必有长度为3的回文串 所以只需判断与前一位,前两位是 ...
- NVIDIA: Failed to initialize NVML: driver/library version mismatch
[NVIDIA驱动:Failed to initialize NVML: driver/library version mismatch] 原因:Ubuntu16.04 装新驱动时,会报以上错误,定位 ...
- (四)Lock,ReentrantLock,ReentrantReadWriteLock类的使用以及相关api---synchronized进阶
这篇博客记录了Lock,ReentrantLock,ReentrantReadWriteLock类的使用以及其一些api: 码字不易~~另外<java多线程编程核心技术>这本书读着很爽 前 ...
- Windows Server 2008 R2服务器内存使用率过高,但与任务管理器中进程占用内存和不一致
系统环境: Windows Server 2008 R2 + Sql Server 2008 R2 问题描述: Windows Server 2008 R2系统内存占用率过大,而在任务管理器中各进 ...
- react native https
1. ios解决方案 1.1 Xcode打开工程,Libraries -> RCTNetworking -> RCTHTTPRequestHandler.mm -> #pragma ...
- 2019强网杯babybank wp及浅析
前言 2019强网杯CTF智能合约题目--babybank wp及浅析 ps:本文最先写在我的新博客上,后面会以新博客为主,看心情会把文章同步过来 分析 反编译 使用OnlineSolidityDec ...
- java 路径问题
java路径存在两种写法"/"和"\\" String path="D:\\1.txt"; String path1="D:/1. ...
- LInux ACL权限控制
1.ACL简介 ACL是一种可以实现灵活的权限管理(文件的额外赋权机制)除了文件所有者,所属组和其他人,可以对更多的用户设置权限,这就是访问控制列表(Access Control List) 2.AC ...