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简介 ...
随机推荐
- [leetcode] 120. Triangle (Medium)
原题 思路: dp,从下往上依次取得最小的,取到最上面的,就是一条最小的路径. class Solution { public: int minimumTotal(vector<vector&l ...
- Simple TPU的设计和性能评估
深度学习飞速发展过程中,人们发现原有的处理器无法满足神经网络这种特定的大量计算,大量的开始针对这一应用进行专用的硬件设计.谷歌的张量处理单元(Tensor Processing Unit,后文简称TP ...
- 基于 Github 存储附件的 wordpress 插件
前言 插件名称 wp-github-gos, 本插件核心功能使用了 GitHub API 设置页面和核心业务逻辑主要参考插件 wordpress-qcloud-cos 的实现,替换了其中 腾讯云 CO ...
- nodejs 获取客户端 ip 地址
应用场景: php:我们需要拿到用户客户端的ip信息,以识别用户位置,但现在我们拿到的地址永远是杭州 前端:我查一下,稍等 .... 明白了,我们加了一层 node 服务器,服务器在杭州,你们拿到的是 ...
- python UUID
UUID介绍 UUID是128位的全局唯一标识符,通常由32字节的字符串表示.它可以保证时间和空间的唯一性,也称为GUID,全称为:UUID ―― Universally Unique IDentif ...
- java中代码的注释和快捷
添加必要的注释,对一个有责任心.有道德模范的前端必须具备的好习惯, 可以大大提高代码的可维护性.可读性. java代码注释快捷键:ctrl+shift+/首先熟悉一下html.css.js的注释的写法 ...
- JS面向对象编程(三):非构造函数的继承
一.什么是"非构造函数"的继承? 现在有一个对象,叫"中国人". var Chinese = { ...
- Lombok 使用介绍(常见注解)
目录 @Data @NonNull @Getter & @Setter @ToString @EqualsAndHashCode @NoArgsConstructor, @RequiredAr ...
- 【iOS】Error: Error Domain=PBErrorDomain Code=7 "Cannot connect to pasteboard server
这几天在用 Swift 开发一个简单的键盘扩展,真机调试时遇到了这个问题,详细信息如下: ***[:] Could not save pasteboard named com.apple.UIKit. ...
- gulp压缩js文件报错日志
输出 gulp-uglify 压缩js文件时报错信息 gulp.task('es6', function () { return gulp.src('src/main/webapp/bower_com ...