UniVue第一个版本发布说明

今天终于发布第一个版本了,爆肝了这么多天,对之前的代码优化重构,今天终于做完了,第一个版本的核心基础功能已经全部完成!

github仓库


稳定版本仓库:https://github.com/Avalon712/UniVue

开发版本仓库:https://github.com/Avalon712/UniVue-Develop

UniVue扩展框架-UniVue源生成器仓库:https://github.com/Avalon712/UniVue-SourceGenerator
                        

写在最前面的话

如果使用UniVue,一天的时间你学不会,一天的时间无法让你喜欢上它,这将是框架的失败、我的失败!如果随着功能的强大要写的代码变多了,这也将是我的失败,UniVue的初衷是:永远不写重复低效的代码,让你只关心游戏的玩法,游戏的视觉效果。

一个人总有他的局限性,或许还有很多功能可能有更好的实现方式。我希望在UniVue3.0后这个框架的star有1k个,有时候看着寥寥无几的star真的没什么动力写。但是或许现在时间比较多能够投入更多的精力开发,也算是坚持下来了。保持热爱前行,追寻自由与理想!

                                                                                        ------------- Avlon712 UniVue第一个版本

UniVue v1.0版本中所有功能模块

  • 数据模型的双向绑定。在UniVue中你永远不需要关心当数据更改时如何去更新视图,你只需要负责怎么去维护你的数据,即模型层,UniVue内置的更新逻辑会为你完美的实现实时的UI响应;

  • UI事件系统。UniVue中内置的UI事件系统,能够实现你只需要一个EventCallAttribute特性标记一个方法就能在事件触发时自动回调这个函数,同时能够为你的方法参数自动赋值(具体的逻辑请参阅后面部分)。(在第一个版本中仅支持反射调用,预计在第二个版本中将会使用C#的源生成生成编译代码来替代反射的调用,对AOT这种编译方式提供更好的方式。)

  • Tween缓动动画。UniVue内置一个简易补帧动画系统模块,以支持一些视图打开、关闭的动画效果,同时一些简单的定时器回调;

  • 视图组件系统。UniVue内置了一些比较常见的视图功能,如ListView、GridView、EnsureTipView(对话视图)、TipView等,同时通过使用组合的方式的方式你能够实现更多更灵活的视图功能。诸如循环列表、无限列表、循环背包等等内置都有视图组件,所有的使用方式只需要写一两行代码,甚至不用写代码;

  • 视图控制系统。UniVue中对所有的视图打开、关闭行为都受到严格的约束,你不必关系我要打开这个视图的视图那个视图应该被关闭等等,这些视图的控制逻辑全部由框架完成,你需要做的事件就是定义这些逻辑,而定义这些逻辑你只需想行了,不需要写任何代码、写任何配置,通过在构建UI的视图把这些逻辑想清楚,然后正确的命给名,OK,这些视图的展现逻辑就将如你想象那般,比如我想的是:“A视图打开时,B视图必须关闭;当C视图没有被打开时,不允许D视图打开........”这些逻辑真的就是靠想就可以了。关于这儿的更详细的描述请看后文。

  • 规则引擎。之所以你能够几乎不用写任何的UI代码,都依赖规则引擎的解析功能,对于每个视图都会被规则引擎在一个指定的时机进行规则解析得出上面的功能,然而第一个版本的规则引擎比较死板,不能够自定义扩展规则,后续版本将进行增强;

第一个版本只能算是一个基础的版本,实现了几乎所有核心的模块(还有几个核心模块在开发中。)

  • 输入系统。目前输入系统较为简单,只有两个类:DraggableInputMouseInput,其中DraggableInput输入模块,允许你实现各种拖拽功能,同时通过DraggableInput输入的组合方式,能够实现更加灵活的方式。

版本说明

目前只对2021及其以上有支持,其它版本没试过,不知道什么情况,源码采用了很多C#9的语法,C#9似乎实在Unity2021开始支持的,如果你要使用源生器或许只能使用2021版本以上。同时不会对Unity都遗弃的功能进行支持,如:Text组件。因为如果对这些相同功能的组件也进行支持会导致ViewModel非常冗余,如果你要进行支持建议自己通过继承PropertyUI,然后看对于的组件是怎么实现更新逻辑的,照抄一遍就可以了。ViewModel的PropertyUI有将近40多个类,emmm,这就是我不打算支持的原因。后面PropertyUI还会进行扩展,可能会有70多个类。

未来版本将会出现的核心功能

  1. 本地化。UniVue后续将对多语言进行支持,预计将在下个版本发布;

  2. UI特效。目前第一个版本的Tween补帧动画模块较为简单,无法支撑起更多复杂的UI效果,在后续版本中将引入强大的UI特效模块实现更多花哨的UI效果;

  3. 可自定义的规则引擎。UniVue的核心功能几乎都依赖这一模块的实现,但是目前的规则引擎只对UniVue内置的规则起作用,无法进行扩展,下个版本将进行扩展,提供更灵活的规则引擎;

  4. UI优化算法。UniVue在后续的版本可能会对UGUI的部分功能进行扩展,特别是Canvas的重绘逻辑,或许将基于屏幕后处理的原理实现一个更高性能的UI合批算法,降低UI的合批次数,减少Canvas的重绘,这个模块预计在UniVue3.0发布;

  5. C#源生成器。第一个版本中的UniVue的源生成器只能对Model层进行优化,在后续版本中将彻底进行完善源生器框架,使用源生器生成所有的低级代码,将所有的低效代码进行优化重组,后续源生器或许将作为内置的选项而不是可选项;

  6. 支持多平台的输入系统。目前第一个版本中没有对输入系统进行多平台的检查,实现的输入系统也很简单,后续将对多个平台进行灵活的支持;

  7. 其它解放编码的功能:更多的视图组件,如:灵活可变的循环列表视图,可多级展开的树形视图、多级菜单视图、大小可自定义的视图等等。

emmm,后续有可能的话将让命名这部分也更高效。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/28691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

196. 删除重复的电子邮箱

196. 删除重复的电子邮箱 题目链接:196. 删除重复的电子邮箱 代码如下: # Write your MySQL query statement below delete from Person as p where p.id not in(select e.id from (select min(id) as idfrom Person group by email ) as e )

(二十一)Java 之多态

目录 一. 前言 二. 多态 2.1. 实例入手 2.2. 虚方法 三. 多态的实现方式 四. 课后习题 一. 前言 多态是同一个行为具有多个不同表现形式或形态的能力。 多态性是对象多种表现形式的体现。 比如我们说“宠物”这个对象,它就有很多不同的表达或实现,…

web前端五行属性:深入探索与实战解析

web前端五行属性:深入探索与实战解析 在Web前端开发中,五行属性这一概念或许听起来有些陌生。然而,如果我们将其与前端开发的核心理念相结合,就能发现其中蕴含的深刻内涵。本文将从四个方面、五个方面、六个方面和七个方面&#…

QT图片转PNG项目实战(含源码)

一、需求说明 最近在换工作,都需要将所有的图片,例如身份证、毕业证等信息都需要合并到一个pdf中。找了软件发现几乎都需要收费,干脆就自己写一个好了。 功能说明如下: 支持鼠标拖动加载图片,可以从桌面将图片类型的文件拖到软件中,一次最多添加150张。支持点击菜单中的…

树莓派4B刷入KODI作为机顶盒

LibreELEC Raspberry - LibreELEC Download - OSMC 使用LibreELEC USB-SD Creator进行系统烧写, LibreELEC USB-SD Creator下载地址 因为Kodi语言包是以插件的形式存在,不是集成到安装包里,有时候网络原因不能连接到Kodi的服务器&#xff…

爬虫初学篇

初次学习爬虫,知识笔记小想 目录🌟 一、🍉基础知识二、🍉http协议:三、🍉解析网页(1) xpath的用法:(2) bs4解析器的解释:(3) python字符编码的错误:(4) 正则表达式&#…

如何在单个VPS上使用nginx、forever和crontab托管多个Node.js应用

遵循本教程的要求 您需要安装 nginx 和 Node.js,并且在 DigitalOcean 上已经有关于这些主题的教程: 如何安装 nginx 和 如何安装 Node.js。 此外,您应该已经拥有一个域名,以便将正在运行的 Node.js 服务映射到域名,而…

手把手教学!新一代 Kaldi: TTS Runtime ASR 实时本地语音识别 语音合成来啦

简介 本文向大家介绍如何在新一代 Kaldi的部署框架 **sherpa-onnx**中使用 TTS。 注:sherpa-onnx 提供的是一个TTS runtime, 即部署环境。它并不支持模型训练。 本文使用的测试模型,都是来源于网上开源的 VITS 预训练模型。 我们提供了 ONNX 导出的支持。如果你也有 VITS 预…

你应该知道的口语连读技巧

[共24课]连读弱读-发音课程已上线 第一课 辅音和元音的连读 linking consonant to vowel 辅音和元音连读 第二课 h和th的删除不读 h-删除|deletion|elision|drop he/her/have/here/him... them-->/əm/ 第三课 t的删去不读(1) t-deletion|elision(1) drop t after…

GEO ISP图像调试-PFC(蓝紫边校正)

目录 1、简单介绍 2、调试策略 3、输出结果 1、简单介绍 GEO中中调整图像蓝紫边可分为两步,第一步:调整蓝紫边检测区域,第二步:设置去蓝紫边强度。 2、调试策略 图1 该图像蓝紫边较严重 主要原因是由于蓝紫边检测不准导致的&…

Java7之后的Java版本主要升级内容

自Java 7之后,Java的各个版本引入了许多重要的特性和改进。以下是Java 8到Java 17每个版本的主要升级内容: Java 8 (2014) Java 8 是一个具有重大里程碑意义的版本,包含了许多重要的特性和改进: Lambda 表达式:引入…

从零制作一个docker的镜像

近期docker的镜像仓库不好用了,很多国内的源也无法使用了,所有今天给大家分享一下怎么从零制作一个CentOS镜像。 准备CentOS7最小环境 mkdir /centos7.9-root# 在该目录准备centos的最小环境 sudo yum --installroot/centos7.9-root --releasever7 ins…

【面试题】MySQL常见面试题总结

备战实习,会定期给大家整理常考的面试题,大家一起加油! 🎯 系列文章目录 【面试题】面试题分享之JVM篇【面试题】面试题分享之Java并发篇【面试题】面试题分享之Java集合篇(三) 注意:文章若有错…

杂谈-C和C++有什么不同

C和C是两种流行的编程语言,它们在很多方面都有相似之处,但也有很多关键的区别。以下是对C和C之间差异的详细比较,旨在清晰地解释两者之间的不同点。 一、设计思想和语法规范 设计思想: C语言:C语言是一种面向过程的语…

将 Python3 程序打包成 APK 并运行在 ARM 的 Android 系统中

作为一个开发者,我们经常需要将我们的 Python 程序部署到移动端,以便更好地服务于用户。然而,直接在 Android 系统上运行 Python 程序却存在一定的挑战,因为 Android 系统默认不支持 Python。这篇文章将介绍如何将 Python3 程序打…

LeetCode435无重叠区间

题目描述 给定一个区间的集合 intervals ,其中 intervals[i] [starti, endi] 。返回 需要移除区间的最小数量,使剩余区间互不重叠 。 解析 由于要删除尽可能少的区间 ,因此区间跨度大的一定是要先删除的,这样就有两种贪心思想了…

API接口:解锁社交电商的创新潜力

摘要 在数字化营销的浪潮中,某音作为一个集社交与电商于一体的平台,其API接口为品牌和商家提供了前所未有的机遇。本文深入探讨了某音API接口如何助力社交电商,实现个性化营销和增强用户体验。 关键词 某音、​​API接口​​、社交电商、个…

FreeRtos-13资源管理

一、临界资源是什么 要独占式地访问临界资源,有3种方法: 1.公平竞争:比如使用互斥量,谁先获得互斥量谁就访问临界资源,这部分内容前面讲过。 谁要跟我抢,我就灭掉谁: 2.中断要跟我抢?我屏蔽中断 3.其他任务要跟我抢?我禁止调度器,不运行任务切换 二、暂停调度器…

API 类别 - 特效核心

API 类别 - 特效核心 引言 在当今的数字时代,应用程序编程接口(API)已成为软件开发和互联网服务的重要组成部分。API作为一种中间件,允许不同的软件系统之间进行交互和数据交换。其中,特效核心API是一类专门用于处理和渲染视觉特效的接口,广泛应用于游戏开发、视频编辑…

接口postman

前后端 前端:是肉眼所能见到的界面 后端:处理数据,数据逻辑 接口:提供前后端交互的通道 接口测试:校验接口返回的响应数据是否与预期的一致 接口测试可以绕过前端,直接对服务器进行测试 请求方式 pos…