【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装

这篇具有很好参考价值的文章主要介绍了【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎


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

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

👨‍💻 本文由 秩沅 原创

👨‍💻 收录于专栏:UnityUI篇实战

⭐🅰️IMGUI封装实践【二】⭐




⭐前言⭐

【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎

缺点1:无法在编译过程进行可视化调整
缺点2:无法分辨率自适应

【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎


🎶(A) 封装可视化脚本控制基类


此图可忽略

【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎

  • UML类图
    【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎

  • 性能优化代码
    【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎

  • 完整代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能: 让所有组件都可视化编辑
//___________创建者:秩沅_______________
//_____________________________________
//-------------------------------------

[ExecuteAlways] //关键特性
public class ShowAllContorlRoot : MonoBehaviour
{
    private ControlFather[] allContorls; //里氏替换原则,装所有子类

    private void Start()
    {
        allContorls = this.GetComponentsInChildren<ControlFather>();
    }
    private void OnGUI()
    {
        foreach (ControlFather  item in allContorls)
        {
            //1.表示没有运行时(编译时)也来获取,Start是点击运行时可以获取
            //2.避免了运行时重复执行该API。消耗性能
            if( !Application.isPlayer)
            {
                allContorls = this.GetComponentsInChildren<ControlFather>();
            }
            item.Judge();
        }
    }
}


🎶(B) 控件创建及其封装——按钮


【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎
【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎

  • 按钮封装代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能: 创建按钮
//___________创建者:秩沅_______________
//_____________________________________
//-------------------------------------
public class Button : ControlFather
{
    public event  UnityAction triggerEvent; 
                                            //事件的添加在此起到妙用
                                            //只要在外部给予响应函数                

    protected override void OffDrawStyle()
    {
        if(GUI.Button(ContorlPosition.LastPos ,ContorlContent))
        {
            triggerEvent?.Invoke();
        }
    }

    protected override void OnDrawstyle()
    {
       if(GUI.Button(ContorlPosition.LastPos, ContorlContent,ContorlStyle ) )
        {
           triggerEvent?.Invoke();
        }
    }
}


🎶(C) 开始创建预制体包


【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎

  • 目的: 便于套用

代码集结

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能: 让所有组件都可视化编辑
//___________创建者:秩沅_______________
//_____________________________________
//-------------------------------------

[ExecuteAlways] //关键特性
public class ShowAllContorlRoot : MonoBehaviour
{
    private ControlFather[] allContorls; //里氏替换原则,装所有子类

    private void Start()
    {
        allContorls = this.GetComponentsInChildren<ControlFather>();
    }
    private void OnGUI()
    {
        foreach (ControlFather  item in allContorls)
        {
            //1.表示没有运行时(编译时)也来获取,Start是点击运行时可以获取
            //2.避免了运行时重复执行该API。消耗性能
            if( !Application.isPlayer)
            {
                allContorls = this.GetComponentsInChildren<ControlFather>();
            }
            item.Judge();
        }
    }
}

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
//-------------------------------------
//—————————————————————————————————————
//___________项目:       ______________
//___________功能: 创建按钮
//___________创建者:秩沅_______________
//_____________________________________
//-------------------------------------
public class Button : ControlFather
{
    public event  UnityAction triggerEvent; 
                                            //事件的添加在此起到妙用
                                            //只要在外部给予响应函数                

    protected override void OffDrawStyle()
    {
        if(GUI.Button(ContorlPosition.LastPos ,ContorlContent))
        {
            triggerEvent?.Invoke();
        }
    }

    protected override void OnDrawstyle()
    {
       if(GUI.Button(ContorlPosition.LastPos, ContorlContent,ContorlStyle ) )
        {
           triggerEvent?.Invoke();
        }
    }
}

ImGUI又称为Dear ImGui,它是与平台无关的C++轻量级跨平台图形界面库,没有任何第三方依赖,可以将ImGUI的源码直接加到项目中使用,也可以编译成dll, ImGUI使用DX或者OpenGL进行界面渲染,对于画面质量要求较高,例如客户端游戏,4k/8k视频播放时,用ImGUI是很好的选择,当然,你得非常熟悉DirectX或者OpenGL,不然就是宝剑在手,屠龙无力。相对于Qt、MFC、DuiLib、SOUI等,ImGUI的拓展性更好,也更轻量级,当然对于开发者的要求也更高.

⭐🅰️⭐


⭐【Unityc#专题篇】之c#进阶篇】

⭐【Unityc#专题篇】之c#核心篇】

⭐【Unityc#专题篇】之c#基础篇】

⭐【Unity-c#专题篇】之c#入门篇】

【Unityc#专题篇】—进阶章题单实践练习

⭐【Unityc#专题篇】—基础章题单实践练习

【Unityc#专题篇】—核心章题单实践练习


你们的点赞👍 收藏⭐ 留言📝 关注✅是我持续创作,输出优质内容的最大动力!


【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装,# UnityGUI篇,# unity实战基础,unity,游戏引擎文章来源地址https://www.toymoban.com/news/detail-612045.html


到了这里,关于【Unity之IMGUI脚本封装】—编译模式下控件可视化及其封装的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 【Unity之IMGUI】—位置信息类和控件基类的封装

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : 缺点1:无法在编译过程进行可视化调整 缺点2:无法分辨率自适应 作用:让控件根据调整对齐 最终代码 特点: 类是抽象类:原因基类

    2024年02月12日
    浏览(24)
  • 【unity之IMGUI实践】敌方逻辑封装实现【六】

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unityUI专题篇 🅰️ 😶‍🌫️:步骤实现 1.炮台的行为逻辑封装:旋转,触发检测,发射炮弹及特效 2.检测玩家后自动瞄准攻击 3.玩家扣

    2024年02月15日
    浏览(35)
  • 【unity之IMGUI实践】游戏结束流程封装实现【七】

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

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

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

    2024年02月15日
    浏览(30)
  • 【unity之IMGUI实践】单例模式管理面板对象【一】

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unityUI专题篇 🅰️ API:简单的旋转 解析: 1.采用单例模式,原因: 单例模式无法被纂改基类,适合当管理者 2.基类提取了子类所有的共

    2024年02月15日
    浏览(37)
  • 【unity之IMGUI实践】单例模式管理数据存储【二】

    👨‍💻个人主页 :@元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏 : unityUI专题篇 🅰️ 😶‍🌫️:步骤实现 1.首先将音乐数据封装在类中,不采用单例模式 2. 而后封装一个游戏数据类为单例模式:功能

    2024年02月16日
    浏览(32)
  • WPF 组态软件实现思路(WPF控件可视化布局)

    一、实现控件选中及自由拖动 二、实现控件对齐功能 三、实现对齐辅助线功能 四、实现框选功能 GitHub地址点此 属性编辑控件基于Devexpress V21.2.3 控件库,如需编译需购买及安装 Devexpress V21.2.3 开发库 脚本编辑基于AvalonEdit开源库 https://github.com/icsharpcode/AvalonEdit 图标控件基于

    2024年02月04日
    浏览(53)
  • 关于图像分割项目的可视化脚本

    之前实现了目标检测和图像分类任务的可视化脚本,本章将最后一个分割任务的可视化脚本实现 效果展示如下: 代码会在当前目录保存展示好的图片,从左到右依次为,原图、mask图、mask覆盖在原图的掩膜图 关于目标检测的可视化: VOC:关于目标检测任务中,XML(voc格式)标

    2024年01月24日
    浏览(26)
  • 界面控件DevExpress WinForms Gauge组件 - 实现更高级别数据可视化

    DevExpress WinForms控件包含了超过150个随时可用的仪表盘预设,包括圆形,数字,线性和状态指示器等,来帮助用户实现更高级的数据可视化。 DevExpress WinForms有180+组件和UI库,能为Windows Forms平台创建具有影响力的业务解决方案。同时能完美构建流畅、美观且易于使用的应用程序

    2024年02月06日
    浏览(45)
  • 界面控件DevExpress WPF Chart组件——拥有超快的数据可视化库!

    DevExpress WPF Chart组件拥有超大的可视化数据集,并提供交互式仪表板与高性能WPF图表库。DevExpress Charts提供了全面的2D / 3D图形集合,包括数十个UI定制和数据分析/数据挖掘选项。 PS:DevExpress WPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。

    2024年02月13日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包