版权申明:

  • 本文原创首发于以下网站:
  1. 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123
  2. 优梦创客的官方博客:https://91make.top
  3. 优梦创客的游戏讲堂:https://91make.ke.qq.com
  4. 『优梦创客』的微信公众号: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);
}
}

最新文章

  1. Spark2 ML 学习札记
  2. HttpServletResponse常用的方法
  3. 时间改成24小时制 和pc mobile链接自动转化
  4. 小谈 - web模仿手机打电话与正则表达式
  5. eclipse新建maven项目(2)
  6. Mysql 死锁的详细分析方法
  7. 前端文摘:Web 开发模式演变历史和趋势
  8. SecureCrt脚本(三)二级对象之Screen详解
  9. WCF之实例模型
  10. 通过udl文件得到连接字符串
  11. web前端开源小案例:立方体旋转
  12. IIC协议总结
  13. C++重难点知识
  14. java基础知识4
  15. Amazon RDS的通用型存储(SSD)
  16. php做的一个简易爬虫
  17. 如何通过织云 Lite 愉快地玩转 TSW
  18. node+mongoose+vue
  19. java中scanner的正确用法
  20. Android设置屏幕旋转后保存数据

热门文章

  1. 总结暨JAVAWEB学习开篇(一)
  2. 「Sqlserver」数据分析师有理由爱Sqlserver之九-无利益关系推荐Sqlserver书单
  3. Vue的基本使用(四)
  4. python调用WebService遇到的问题&#39;Document&#39; object has no attribute &#39;set&#39;
  5. Linux系统安装MySQL——.rpm版
  6. Java--UTF-8
  7. C++多小球非对心弹性碰撞(HGE引擎)
  8. 物联网网关MQTT应用与配置测试介绍
  9. Spring条件注解@Conditional
  10. 【Java例题】6.2 日期类的使用