【unity之IMGUI实践】单例模式管理面板对象【一】

这篇具有很好参考价值的文章主要介绍了【unity之IMGUI实践】单例模式管理面板对象【一】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript


👨‍💻个人主页:@元宇宙-秩沅

👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅!

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏unityUI专题篇
【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript


⭐单例模式管理面板对象⭐



🎶前言


🅰️


🎶(A)常用关键API


【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript
【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript


🎶(B)需求分析


【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript


🎶(C)开始场景制作


【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript

  • API:简单的旋转

【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript


🎶(D)逻辑封装——面板基类


【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript

解析:

1.采用单例模式,原因: 单例模式无法被纂改基类,适合当管理者

2.基类提取了子类所有的共性: 即面板的显示和隐藏

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//           项目:       
//           功能: 开始面板的基类(单例模式)
//           创建者:秩沅
//_____________________________________
//-------------------------------------
public class BeginFather<T>: MonoBehaviour where T : class 
{
    static private T planeFather;
    static public  T PlaneFather => planeFather;    
    
    private void Awake()
    {
        planeFather = this as T  ; //到时被继承时的类型会不同,需加上泛型约束class
    }

    public virtual   void Hidden()
    {
        this.gameObject.SetActive(false);
    }

    public virtual  void Show()
    {
        this.gameObject.SetActive(true);
    }
}


🎶(E)逻辑封装——主界面类


【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能: 开始面板类
//___________创建者:秩沅_______________
//_____________________________________
//-------------------------------------
public class BeginPlane : BeginFather<BeginPlane>
{
    //获取开始面板中的各个按钮控件
    public Button but1;
    public Button but2;
    public Button but3;
    public Button but4;

    private void Start()
    {
        but1.triggerEvent += () => { SceneManager.LoadScene("Start"); }; //点击“开始游戏”
        but2.triggerEvent += () => { Hidden(); };                        //点击“游戏设置”
        but3.triggerEvent += () => { Application.Quit(); };              //点击“退出游戏”
        but4.triggerEvent += () => { Hidden(); };                        //点击“排行榜”
    }
}


🎶(F)设置界面制作


【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript


🎶(G)逻辑封装——设置面板类


  • 首先让面板进行合理的显隐切换
  • 当按下设置时,开始界面功能失效并且隐藏,设置界面激活
  • 实现效果
    【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript
    【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript
    【unity之IMGUI实践】单例模式管理面板对象【一】,# UnityGUI篇,unity,单例模式,javascript
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能:  设置面板功能
//___________创建者:秩沅_______________
//_____________________________________
//-------------------------------------
public class SetPlane : BeginFather<SetPlane>
{
  //将功能控件拖拽对应的成员变量中
    public Button closeButt;
    public Slider sliderMusic;
    public Slider sliderSound;
    public ToggleM toggleMusic;
    public ToggleM toggleSound;

    private float toggle1;
    private float toggle2;

    private void Start()
    {
        this.Hidden();
        //按钮中事件的添加
        closeButt.triggerEvent += () => {
            this.gameObject.SetActive(false);
            BeginPlane.SingleInstance.Show();
        };
        //滑条中事件的添加
   
        sliderMusic.triggerEvent += (value) =>
        {
            
        };
        sliderSound.triggerEvent += (value) =>
        {

        };
        //多选框中事件的添加

        toggleMusic.triggerEvent += (value) =>
        {

        };
        toggleSound .triggerEvent += (value) =>
        {

        };
    }
}
----------------------
此时开始面板脚本也需要修改
----------------------


using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能: 开始面板类
//___________创建者:秩沅_______________
//_____________________________________
//-------------------------------------
public class BeginPlane : BeginFather<BeginPlane>
{
    // 获取开始面板中的各个按钮控件

    public Button but1;
    public Button but2;
    public Button but3;
    public Button but4;
   
    private void Start()
    {
        but1.triggerEvent += () => { SceneManager.LoadScene("Start"); };                 //点击“开始游戏”
        but2.triggerEvent += () => { Hidden(); SetPlane.SingleInstance.Show();   };      //点击“游戏设置”
        but3.triggerEvent += () => { Application.Quit(); };                              //点击“退出游戏”
        but4.triggerEvent += () => { Hidden();  };                                       //点击“排行榜”
    }


}


相关文章


⭐【2023unity游戏制作-mango的冒险】-6.关卡设计

⭐【2023unity游戏制作-mango的冒险】-5.攻击系统的简单实现

⭐【2023unity游戏制作-mango的冒险】-4.场景二的镜头和法球特效跟随

⭐【2023unity游戏制作-mango的冒险】-3.基础动作和动画API实现

⭐【2023unity游戏制作-mango的冒险】-2.始画面API制作

⭐【2023unity游戏制作-mango的冒险】-1.场景搭建

⭐“狂飙”游戏制作—游戏分类图鉴(网易游学)

⭐本站最全-unity常用API大全(万字详解),不信你不收藏



你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!文章来源地址https://www.toymoban.com/news/detail-556857.html

到了这里,关于【unity之IMGUI实践】单例模式管理面板对象【一】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【unity之IMGUI实践】游戏结束流程封装实现【七】

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unityUI专题篇 🅰️ 😶‍🌫️:步骤实现 1.坐标三个转化 2.GUI的原点和屏幕的原点 3.结构体的特点回顾——涉及Rect_结构体类型 4.血条的

    2024年02月14日
    浏览(45)
  • 【unity之IMGUI实践】抽象父类继承实现【三】

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unityUI专题篇 🅰️ 总效果图 😶‍🌫️:步骤 1.创建游戏面板,进行组件管控 2.创建提示面板进行退出确定 3.同步面板直接的显隐和复

    2024年02月16日
    浏览(49)
  • 【unity之IMGUI实践】通用API实现抽象行为封装【五】

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unityUI专题篇 🅰️ 😶‍🌫️:步骤 1.添加道具预制体(随机生成武器) 2.封装道具基类 3.封装武器道具逻辑 1.封装道具基类 封装武器道具

    2024年02月15日
    浏览(40)
  • 【Unity之IMGUI】—编译模式下控件可视化及其封装

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :UnityUI篇实战 缺点1:无法在编译过程进行可视化调整 缺点2:无法分辨率自适应 此图可忽略 UML类图 性能优化代码 完整代码: 按钮封装代

    2024年02月10日
    浏览(41)
  • 【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 :UnityUI篇实战 缺点1:无法在编译过程进行可视化调整 缺点2:无法分辨率自适应 此图可忽略 UML类图 性能优化代码 完整代码: 按钮封装代

    2024年02月15日
    浏览(58)
  • 面向对象中的单例模式

    设计模式就是前人根据实际的问题提出的问题解决方案,我们把这种就称之为设计模式。 单例模式是一种常见的设计模式! 所谓的设计模式,不是一种新的语法,而是人们在实际的应用中,面对某种特定的情形而设计出来的某种常见的有效的解决方案,所以,设计模式只是

    2024年02月05日
    浏览(47)
  • 单例模式的理论与实践

    本文实践代码仓库:https://github.com/goSilver/my_practice 单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点以访问该实例。单例模式常用于需要共享资源或控制某个唯一资源的场景,例如数据库连接、线程池等。 单例模式可以确保在整个应用程

    2024年02月12日
    浏览(35)
  • Python 面向对象之单例模式

    单例模式是一种设计模式,其核心思想是确保一个类只有一个实例,并提供一个全局访问点。 单例模式通常用于管理共享的资源,例如配置信息、数据库连接、线程池等。 关键点在于如何判断这个类是否已经实例化 通过模块导入:借助模块的底层导入原理 通过元类实现:元

    2024年01月25日
    浏览(59)
  • Kotlin对象和单例模式:探索这种强大设计模式的好处

    在Kotlin中,使用\\\"object\\\"来定义一个单例对象。所谓单例对象,就是在整个应用程序中只有一个实例存在。简单来说,就好像只有一个蜘蛛侠一样,不可能同时有多个蜘蛛侠存在(除非是在处理平行宇宙的故事情节,但那是另外一回事)。在Kotlin中,单例对象也是如此。

    2024年02月10日
    浏览(47)
  • C++ 单例模式的各种坑及最佳实践

    单例模式是设计模式中最简单、常见的一种。其主要目的是确保整个进程中,只有一个类的实例,并且提供一个统一的访问接口。常用于 Logger 类、通信接口类、线程池等。 限制用户直接访问类的构造函数,提供一个统一的 public 接口获取单例对象。 这里有一个“先有鸡还是

    2024年02月08日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包