[ARPG阶段二] 2.制作主菜单开始游戏场景,完善游戏流程

完整的游戏流程应该是主菜单场景->新建自定义角色场景(如果继续游戏则跳过这步)->实际的游戏场景。具体流程如下

新建开始游戏菜单场景并导入摆放好的UI窗口

创建好场景后,这里直接导入摆放好的窗口资源(带三个按钮就行,UI的制作不做重点,资源商店随便找个)。

创建场景管理器

创建场景管理器,挂载同名脚本,用于控制在进入主菜单场景时动态加载主菜单UI窗口。

alt

场景管理器继承自逻辑管理器基类(框架里的一种单例,预先写好了事件监听添加移除的方法),并使用UI框架管理UI窗口的生命周期,框架的导入见第一阶段

public class MenuSceneManager : LogicManagerBase<MenuSceneManager>
{
    void Start()
    {
        UIManager.Instance.Show<UI_MainMenuSceneWindow>();
    }

UI窗口上挂载同名控制类。

集成了UI的View和Controller,其中控制逻辑借由UI框架完成,UI窗口类继承自WindowBase,使用UI框架和自定义特性进行管理。添加开始游戏,继续游戏,关闭游戏三个Button及对应的事件监听方法,并指定窗口关闭时进行窗口AA资源的释放。

[UIElement(false, "UI_MainMenuSceneWindow",1)]
public class UI_MainMenuSceneWindow : UI_WindowBase
{
    [SerializeField] Button startButton;
    [SerializeField] Button continueButton;
    [SerializeField] Button quitButton;

    public override void Init()
    {
        startButton.onClick.AddListener(StartButtonClick);
        continueButton.onClick.AddListener(ContinueButtonClick);
        quitButton.onClick.AddListener(quitButtonClick);

        //TODO:如果当前没有存档,应该隐藏继续游戏按钮
    }

    public void StartButtonClick()
    {
        //使用当前存档进行游戏
        Close();
    }

    public void ContinueButtonClick()
    {
        //创建存档进行游戏-》进入自定义角色场景
        Close();
    }

    public void quitButtonClick()
    {
        Application.Quit();
    }

    public override void OnClose()
    {
        base.OnClose();
        //释放自身的AA资源
        ResManager.ReleaseInstance(gameObject);
    }
}

绑定UI元素。

alt

GameRoot下的GameManager挂载同名脚本

使用GameManager(GameRoot下的单例)进行跨场景数据传输,向GameManager中添加存档相关方法。 alt

public class GameManager : SingletonMono<GameManager>
{   
    /// <summary>
    /// 创建新存档
    /// </summary>
    public void CreateNewArchiveAndEnterGame()
    {
        //TODO:进入自定义角色场景
    }

    /// <summary>
    /// 使用存档,进入游戏
    /// </summary>
    public void UseCurrentArchiveAndEnterGame()
    {
        // TODO:进入游戏场景
    }

向AA中添加UI窗口资源

因为使用了框架中的资源服务,预制体的加载都是通过AA的,所以要添加,资源的释放在窗口Close时调用。 alt

测试结果如下,进入主菜单场景时,场景管理器通过AA加载UI窗口点,击进入游戏触发窗口关闭事件并释放资源。

alt

Unity独立游戏开发-ARPG 文章被收录于专栏

Unity独立游戏开发

全部评论

相关推荐

06-13 17:33
门头沟学院 Java
顺序不记了,大致顺序是这样的,有的相同知识点写分开了1.基本数据类型2.基本数据类型和包装类型的区别3.==和equals区别4.ArrayList与LinkedList区别5.hashmap底层原理,put操作时会发生什么6.说出几种树型数据结构7.B树和B+树区别8.jvm加载类机制9.线程池核心参数10.创建线程池的几种方式11.callable与runnable区别12.线程池怎么回收线程13.redis三剑客14.布隆过滤器原理,不要背八股,说说真正使用时遇到了问题没有(我说没有,不知道该怎么回答了)15.堆的内存结构16.自己在写项目时有没有遇见过oom,如何处理,不要背八股,根据真实经验,我说不会17.redis死锁怎么办,watchdog机制如何发现是否锁过期18.如何避免redis红锁19.一个表性别与年龄如何加索引20.自己的项目的QPS怎么测的,有没有真正遇到大数量表21.说一说泛型22.springboot自动装配原理23.springmvc与springboot区别24.aop使用过嘛?动态代理与静态代理区别25.spring循环依赖怎么解决26.你说用过es,es如何分片,怎么存的数据,1000万条数据怎么写入库中27.你说用limit,那么在数据量大之后,如何优化28.rabbitmq如何批次发送,批量读取,答了延迟队列和线程池,都不对29.计网知不知道smtp协议,不知道写了对不对,完全听懵了30.springcloud知道嘛?只是了解反问1.做什么的?短信服务,信息量能到千万级2.对我的建议,基础不错,但是不要只背八股,多去实际开发中理解。面试官人不错,虽然没露脸,但是中间会引导我回答问题,不会的也只是说对我要求没那么高。面完问我在济宁生活有没有困难,最快什么时候到,让人事给我聊薪资了。下午人事打电话,问我27届的会不会跑路,还在想办法如何使我不跑路,不想扣我薪资等。之后我再联系吧,还挺想去的😭,我真不跑路哥😢附一张河科大幽默大专图,科大就是大专罢了
查看30道真题和解析
点赞 评论 收藏
分享
07-22 13:50
门头沟学院 Java
仁者伍敌:其实能找到就很好了,当然收支能抵
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务