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

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

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


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

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

👨‍💻 本文由 秩沅 原创

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

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




⭐前言⭐

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

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

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


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


此图可忽略

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

  • UML类图
    【Unity之IMGUI】—编译模式下控件可视化及其封装

  • 性能优化代码
    【Unity之IMGUI】—编译模式下控件可视化及其封装

  • 完整代码:

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】—编译模式下控件可视化及其封装
【Unity之IMGUI】—编译模式下控件可视化及其封装

  • 按钮封装代码
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】—编译模式下控件可视化及其封装

  • 目的: 便于套用

代码集结

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】—编译模式下控件可视化及其封装文章来源地址https://www.toymoban.com/news/detail-496312.html


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

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

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

相关文章

  • PyG基于DeepWalk实现节点分类及其可视化

    大家好,我是阿光。 本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphSAGE等经典图网络,每一个代码实例都附带有完整的代码。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10 语言环

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

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

    2024年02月06日
    浏览(57)
  • 目标检测yolo格式与labelme标注互相转换及其可视化

              yolo目标检测数据采用矩形框进行标注,其标注格式为[cls_id xp yp wp hp],cls_id表示目标所属的类别序号。xp、yp表示目标中心点相对坐标,其中xp等于目标的绝对横坐标除以图像宽度,yp等于目标的绝对纵坐标除以图像高度。wp和hp表示目标的相对宽度和高度,其中

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

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

    2024年02月13日
    浏览(46)
  • 【阿旭机器学习实战】【36】糖尿病预测---决策树建模及其可视化

    【阿旭机器学习实战】系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流。 关注GZH: 阿旭算法与机器学习 ,回复:“ ML36 ”即可获取本文数据集、源码与项目文档 pregnant glucose bp skin insulin bmi pedigree age label 0 6 148 72 35 0 33.6 0.627 50 1 1 1

    2024年02月11日
    浏览(48)
  • 计算机视觉:点云的PCD和BIN格式及其转换与可视化

    点云数据通常以不同的格式存储,其中PCD(Point Cloud Data)和BIN(Binary)是两种常见的格式,用于表示三维点云数据。下面是它们的具体介绍: PCD格式是一种常见的开放式点云数据存储格式,最初由ROS(Robot Operating System)中的PCL(Point Cloud Library)项目引入,现在广泛用于点云

    2024年02月03日
    浏览(36)
  • Python数据分析案例12——网飞影视剧数据分析及其可视化

    Netflix是最受欢迎的媒体和视频流平台之一。他们的平台上有超过 8000 部电影或电视节目。截至 2021 年年中,他们在全球拥有超过 2 亿订阅者。 博主看美剧也较为多,像《怪奇物语》、《性爱自修室》等高分美剧都是网飞的。 对于网飞的影视剧,我们可以分析其电影和电视剧

    2024年02月08日
    浏览(49)
  • PyG基于Node2Vec实现节点分类及其可视化

    大家好,我是阿光。 本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphSAGE等经典图网络,每一个代码实例都附带有完整的代码。 正在更新中~ ✨ 🚨 我的项目环境: 平台:Windows10 语言环

    2024年02月02日
    浏览(53)
  • Unity制作数据可视化三维场景

    数据可视化大屏是这几年比较热门的一个方向,人们对数据的感知方式,也慢慢要求更严苛了。 Bi报表到数据可视化大屏,再到三维可视化大屏,这个发展趋势也体现了人们在使用数据可视化大屏时对效果的要求逐渐提高。 2维图表在过去几年的使用中,不断完善,已经有了

    2023年04月10日
    浏览(45)
  • RabbitMQ 03 直连模式-可视化界面

    这里先演示最简单的模型:直连模式。其结构图为: 一个生产者 - 消息队列 - 一个消费者 生产者只需要将数据丢进消息队列,而消费者只需要将数据从消息队列中取出,这样就实现了生产者和消费者的消息交互。 创建一个新的实验环境,即新建一个Virtual Host。 添加新的虚拟

    2024年02月11日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包