极致21点开发DAY1

最近在学习UI框架,无奈没有完整的项目学习,四处搜索找了这款游戏源码,在Unity2018上完美运行。于是乎开始学习开发这款游戏。今天主要完成的任务时拼UI。搭建了3个场景, StartScene, LoadingScene, MainScene。PlayScene比较复杂,包含了复杂的逻辑,放在最后学习。

1.StartScene

这个场景比较简单,主要包括3个部分:背景,Logo,开始按钮。

逻辑:点击开始按钮,进入LoadingScene。

在UICamera或者Canvas(StartScene)物体上挂载脚本StartMgr.cs

 1 using UnityEngine;
 2 using UnityEngine.SceneManagement;
 3 using UnityEngine.UI;
 4 public class StartMgr : MonoBehaviour
 5 {
 6     public Button btnStart;
 7     private void Start()
 8     {
 9         if(btnStart != null)
10         {
11             //给按钮添加监听事件
12             btnStart.onClick.AddListener(OnLoadLevel);
13         }
14     }
15
16     private void OnLoadLevel()
17     {
18         SceneManager.LoadScene(1);
19     }
20
21 }

2.LoadingScene

这个场景包含的主要元素是:背景、Logo、齿轮(含旋转的动画),进度条。

加载游戏用到了异步加载技术,在LoadScene物体上挂载脚本LoadScene.cs。

 1 using System.Collections;
 2 using UnityEngine;
 3 using UnityEngine.SceneManagement;
 4 using UnityEngine.UI;
 5 using System.Collections.Generic;
 6 public class LoadScene : MonoBehaviour
 7 {
 8     public Slider progressBar;
 9     //当前加载进度
10     private float currentProgress = 0;
11     //目标加载进度
12     private float targetProgress = 0;
13
14     private void Start()
15     {
16        //启动协程
17         StartCoroutine("LoadingScene");
18     }
19
20     private IEnumerator LoadingScene()
21     {
22         //异步加载
23         AsyncOperation asyncOp = SceneManager.LoadSceneAsync(2);
24         //没有加载完毕时
25         while (asyncOp.progress < 0.9f)
26         {
27             Debug.Log("正在疯狂加载中...");
28             currentProgress = asyncOp.progress;
29             yield return UpdateProgressBarValue();
30         }
31         currentProgress = 1f;
32         yield break;
33     }
34
35     private IEnumerator<WaitForEndOfFrame> UpdateProgressBarValue()
36     {
37         while (targetProgress < currentProgress)
38         {
39             Debug.Log("正在更新进度...");
40             targetProgress += 0.01f;
41             progressBar.value = targetProgress;
42             yield return new WaitForEndOfFrame();
43         }
44         yield break;
45     }
46
47 }

3.MainScene

这个场景元素比较多,分为七大块。Main, PersonalInfo,Action,TAsk,Install,Explain

今天完成的逻辑比较简单,就是点击头像打开个人中心面板及其关闭逻辑。代码如下:Person

PersonalController.cs负责个人中心面板逻辑,MainSceneController负责整个场景游戏逻辑。

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.UI;
 5 public class MainSceneController : MonoBehaviour
 6 {
 7     public Button headBtn;
 8     public GameObject personalInfo;
 9
10     private void Start()
11     {
12         Init();
13     }
14
15     private void Init()
16     {
17         headBtn.onClick.AddListener(OnHeadBtn);
18     }
19     private void OnHeadBtn()
20     {
21         personalInfo.SetActive(true);
22     }
23
24 }
 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.UI;
 5 public class PersonalController : MonoBehaviour
 6 {
 7     public InputField nameInput;
 8     public InputField mottoInput;
 9     public Button sureBtn;
10     public Button closeBtn;
11
12
13     private void Start()
14     {
15         Init();
16     }
17
18     private void Init()
19     {
20         sureBtn.onClick.AddListener(OnSureBtn);
21         closeBtn.onClick.AddListener(OnCloseBtn);
22     }
23     private void OnSureBtn()
24     {
25         PlayerPrefs.SetString("name", nameInput.text);
26         PlayerPrefs.SetString("motto", mottoInput.text);
27         OnCloseBtn();
28     }
29
30     private void OnCloseBtn()
31     {
32         gameObject.SetActive(false);
33     }
34 }

原文地址:https://www.cnblogs.com/blackteeth/p/10203287.html

时间: 2024-10-16 21:14:07

极致21点开发DAY1的相关文章

极致21点开发DAY2

今天完成的主要内容时MainScene场景中设置面板的开发.游戏逻辑:点击设置按钮,弹出音乐设置弹框,弹框内容包括音乐的打开与关闭,退出游戏. 点击退出游戏,弹出退出游戏确认面板.效果图: 1.首先在Controller.cs文件中添加Settings对象以及这两个面板对象字段.然后添加打开设置面板的方法,代码如下: 1 public GameObject set_music; 2 public GameObject set_confirm; 3 4 private void OnSetBtn(

极致21点开发DAY3

今天完成的主要任务是活动窗口的显示与关闭,以及领取金币的逻辑.用到了数据持久化技术.我想记录的主要是领取金币的逻辑. 领取金币算法:如果今天没有领取金币,即可领取,否则什么都不做. 一句话描述足矣,但实现起来并不是那么简单.涉及到保存是否领金币状态,以及第几次领取金币.还是用代码说话吧: 1 using System; 2 using System.Collections.Generic; 3 using UnityEngine; 4 using UnityEngine.UI; 5 6 7 pu

Sea.js 提供简单、极致的模块化开发体验

http://seajs.org/docs/#intro 为什么使用 Sea.js ? Sea.js 追求简单.自然的代码书写和组织方式,具有以下核心特性: 简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码. 自然直观的代码组织方式:依赖的自动加载.配置的简洁清晰,可以让我们更多地享受编码的乐趣. Sea.js 还提供常用插件,非常有助于开发调试和性能优化,并具有丰富的可扩展接口. 兼容性 Sea.js 具备完善的测试用例,兼容所有主流浏览器:

Python基础开发 day1

Python开发基础-Day1-python入门 编程语言分类 机器语言 使用二进制代码直接编程,直接与硬件交互,执行速度非常快,灵活,但是开发难度高,开发效率低下,缺乏移植性. 汇编语言 对机器语言指令进行了英文封装,较机器语言容易记忆,直接与硬件交互,执行速度快,执行文件小,但是开发难度相对也很高,开发效率低 高级语言 语法简单,容易理解,开发难度低效率高,开发后测试方便,但是开发的程序需要经过转换才能执行,所以执行效率相对慢,可移植性高. 解释执行:代码执行时候,解释器按照源代码文件中的内

python全栈开发day1

1.python种类和区别 Cpython Python的官方版本,使用C语言实现,使用最为广泛,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),然后运行在Python虚拟机上. Jyhton Python的Java实现,Jython会将Python代码动态编译成Java字节码,然后在JVM上运行. IronPython Python的C#实现,IronPython将Python代码编译成C#字节码,然后在CLR上运行.(与Jython类似) PyPy(特殊) Pytho

Sea.js提供简单、极致的模块化开发体验

为什么使用 Sea.js ? Sea.js 追求简单.自然的代码书写和组织方式,具有以下核心特性: 简单友好的模块定义规范:Sea.js 遵循 CMD 规范,可以像 Node.js 一般书写模块代码. 自然直观的代码组织方式:依赖的自动加载.配置的简洁清晰,可以让我们更多地享受编码的乐趣. Sea.js 还提供常用插件,非常有助于开发调试和性能优化,并具有丰富的可扩展接口. 兼容性 Sea.js 具备完善的测试用例,兼容所有主流浏览器: Chrome 3+ ? Firefox 2+ ? Safa

安卓开发Day1

笔记 将所有.class文件变成一个.dex 文件 是dvm(Dalvik vm)的优势. 很快 dvm基于寄存器的架构 安卓版本4.1.2和2.3 是最稳定的 安卓任何的控件都继承自View System.out.println() 才能输出 .少了ln都不行 et_number.getText().toString() et_number.getText()居然也可以 MainActivity最终继承于上下文 Context 打电话 RelativeLayout线性布局 <EditText

JavaEE(21) - JAAS开发安全的应用

1. 安全域.角色和用户组 容器提供的两种安全性控制:声明式安全控制和编程式安全控制 安全域是指用户.用户组和ACL的逻辑集合.服务器支持的两种常用安全域:RDBMS安全域和文件系统安全域. 2. JAAS基本流程 初始化请求-->初始化认证-->URL授权-->完成原来的请求-->调用EJB的业务方法 对JavaEE应用程序而言,用户提交的认证信息经过一次认证后,可以透明的传递到其他层.授权过程则需要执行多次. 3. 管理Weblogic服务器上的用户和组 4. 在Web应用中声

i.MX6ULL开发板【终结者】硬件资源说明

1.1  初识 L i.MX6ULL 终结者开发板 终结者开发板迅为i.MX6ULL 终结者开发板硬件资源非常丰富,几乎将 i.MX6ULL 芯片的所有资源都扩展引出到底板上了,底板提供了丰富的外设接口,开发板的尺寸是 190mm*125mm,充分考虑了人性化设计,整体显得十分大气.I.MX6ULL 终结者底板板载资源如下:1.邮票孔核心板接口,支持迅为电子的 i.MX6UL/i.MX6ULL 核心板.2.一个电源指示灯(红色)3.一个状态指示灯(红色)4.板载 Wifi/蓝牙二合一模块5.一个