Unity进阶:用AssetBundle和Json做了一个玩家登陆界面
版权申明:
- 本文原创首发于以下网站:
- 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
- 优梦创客的官方博客:https://91make.top
- 优梦创客的游戏讲堂:https://91make.ke.qq.com
- 『优梦创客』的微信公众号:umaketop
- 您可以自由转载,但必须加入完整的版权声明
1.创建玩家登陆界面UI
2.点击注册按钮进入注册界面
3.注册的玩家信息会被保存到PlayerInfo.json文件中
4.输入玩家信息如果用户名或密码出错会提示用户信息错误,并不执行加载
5.输入正确的信息才能加载到LoadScene场景中
6.加载结束后即可进入游戏画面
代码如下:
1.创建一个玩家信息类
[Serializable]//让玩家信息类可序列化和反序列化
public class PlayerInfo {
public string userName;
public string userPassword;
}
2.将游戏场景打包成AssetBundle资源
public class BuildAsset : MonoBehaviour {
[MenuItem("AssetBundle/Build")]
public static void Build() {
BuildPipeline.BuildAssetBundles(Application.dataPath + "/AssetBundle",BuildAssetBundleOptions.None,BuildTarget.StandaloneWindows);
}
}
3.UI控制脚本
public class UI_Manager : MonoBehaviour, IPointerClickHandler
{
public PlayerInfo playerInfo;
public InputField userName;
public InputField userPassword;
public GameObject error;
public GameObject register;
public WWW www;
public void OnPointerClick(PointerEventData eventData)
{
switch (this.name) {
case "Register":
Register();
break;
case "Confirm":
Save();
break;
case "Login":
Load();
break;
case "Cancel":
Cancel();
break;
case "Exit":
Exit();
break;
}
}
private void Start()
{
if (this.name == "Load") {
Loading();
}
}
private void Update()
{
if (this.name == "Load") {
GetComponent<Slider>().value = www.progress;
}
}
public void Exit() {
EditorApplication.isPlaying = false;
}
public void Cancel() {
Destroy(register);
}
public void Loading() {
StartCoroutine(DownLoadAB());
}
public IEnumerator DownLoadAB() {
www = new WWW("file://" + Application.dataPath + "/AssetBundle/scene-bundle");
yield return www;
AssetBundle ab = www.assetBundle;
SceneManager.LoadScene("DemoScene");
}
public void Load()
{
string[] s = File.ReadAllLines(Application.dataPath + "/JsonFiles/PlayerInfo.json");
for (int i=0;i<s.Length;i++) {
playerInfo = JsonUtility.FromJson<PlayerInfo>(s[i]);
if (userName.text == playerInfo.userName && userPassword.text == playerInfo.userPassword) {
SceneManager.LoadScene("LoadScene");
return;
}
}
error.SetActive(true);
}
public void Save()
{
playerInfo.userName = userName.text;
playerInfo.userPassword = userPassword.text;
if (playerInfo.userName != "" && playerInfo.userPassword != "") {
string s = JsonUtility.ToJson(playerInfo) + "\r\n";
File.AppendAllText(Application.dataPath + "/JsonFiles/PlayerInfo.json", s);
Destroy(register);
return;
}
error.SetActive(true);
}
public void Register() {
Instantiate(register);
}
}
Unity进阶:用AssetBundle和Json做了一个玩家登陆界面的更多相关文章
- 利用Py-Socket模块做的一个不登陆windows服务器自动实现替换或者调用自动拨号功能
xu言: 最近,有个朋友让我帮忙“搞点事情”,然后正好在学习socket模块,这个模块666啊,基本上可以实现远程服务器cmd shell的大部分功能.好,话不多说,直接上码~ 由于很多电信运营商都会 ...
- 「翻译」Unity中的AssetBundle详解(一)
AssetBundles AssetBundle是一个存档文件,其中包含平台在运行时加载的特定资产(模型,纹理,预制,音频剪辑,甚至整个场景).AssetBundles可以表示彼此之间的依赖关系;例如 ...
- Unity热更新 AssetBundle
在游戏开发中,常常需要用到热更新技术.比如:一个手机游戏开发好后,用户安装到手机上.如果此时我们要更新一个新的功能,如果没有热更新,那么需要用户卸载掉手机上的游戏,然后安装新的包,这样做十分麻烦,而且 ...
- 在Unity中使用LitJson解析json文件
LitJson 这个库需要找资源,找到LitJson.dll后将它放在Assets文件夹下,在脚本中使用using引入即可 测试代码 json文件: {"Archice":[{&q ...
- [翻译]Unity中的AssetBundle详解(三)
构建AssetBundles 在AssetBundle工作流程的文档中,我们有一个示例代码,它将三个参数传递给BuildPipeline.BuildAssetBundles函数.让我们更深入地了解我们 ...
- 「翻译」Unity中的AssetBundle详解(二)
为AssetBundles准备资源 使用AssetBundles时,您可以随意将任何Asset分配给所需的任何Bundle.但是,在设置Bundles时,需要考虑一些策略.这些分组策略可以使用到任何你 ...
- Unity进阶之ET网络游戏开发框架 04-资源打包
版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...
- 做了一个quartz用到的cron在线生成器
做了一个quartz用到的cron在线生成器 做了一个quartz用到的cron在线生成器 做这个的目的是前期在做Quartz时老是不知道如何去写,我想也有很多人和我一样吧. 有一次使用了一个老外 ...
- {Django基础七之Ajax} 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解)
Django基础七之Ajax 本节目录 一 Ajax简介 二 Ajax使用 三 Ajax请求设置csrf_token 四 关于json 五 补充一个SweetAlert插件(了解) 一 Ajax简介 ...
随机推荐
- 利用 ssh 传输文件
前提条件: 服务器要开启写入权限: 本地和服务器都要安装有 scp 包: 如何传输: 1. 从服务器上下载文件: scp username@servername:远程目录/文件名 本地目录 例:scp ...
- java练习---5
//程序员:罗元昊 2017.9.17 package demo;import java.util.Scanner;public class Ly { public static void main ...
- spark 源码分析之六--Spark RPC剖析之Dispatcher和Inbox、Outbox剖析
在上篇 spark 源码分析之五 -- Spark内置RPC机制剖析之一创建NettyRPCEnv 中,涉及到了Diapatcher 内容,未做过多的剖析.本篇来剖析一下它的工作原理. Dispatc ...
- ListView 控件总结
1.ListView类 1.常用的基本属性: (1)FullRowSelect:设置是否行选择模式.(默认为false) 提示:只有在Details视图该属性才有 ...
- RobotFramework_4.SeleniumLibrary操作(二)
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- 【iOS】"OS X"想要进行更改。键入管理员的名称和密码以允许执行此操作("OS X"想使用系统钥匙串)
今天真机调试的时候遇到了这个问题,如下图: 每次调试都要输入两次用户名和密码,好麻烦的说…… 关键时刻找到了这篇文章:"Mac OS X"想要进行更改.键入管理员的名称和密码以允许 ...
- Restful API 中的错误处理
简介 随着移动开发和前端开发的崛起,越来越多的 Web 后端应用都倾向于实现 Restful API. Restful API 是一个简单易用的前后端分离方案,它只需要对客户端请求进行处理,然后返回结 ...
- Ubuntu下python安装mysqldb(驱动)
最近在学习Django框架,需要使用到数据库,我使用的是mysql,跟java一样,需要安装驱动,这是驱动的下载网址http://sourceforge.net/projects/mysql-pyth ...
- 重启iis的命令是什么?三种简单的重启方式
第一种.界面操作 打开“控制面板”->“管理工具”->“服务”.找到“IIS Admin Service” 右键点击“重新启动” 弹出 “停止其它服务” 窗口,点击“是”. 第二种.Net ...
- kali,ubuntu, debain DNS 配置
kali 是基于 debain 的一个 Linux 发行版 DNS 的配置 是在文件 /etc/resolv.conf 下. 但是,我们会发现 /etc/resolv.conf 每次重启都会失效, ...