{"repo":"Avalon712/UniVue","free":true,"listed":false,"github":"https://github.com/Avalon712/UniVue","clone":"git clone https://github.com/Avalon712/UniVue.git","description":"High-performance, lightweight reactive UI framework for Unity.","language":"C#","stars":114,"topics":["mvvm","ugui","unity","reactiveui"],"license":"MIT","category":"game-templates","readme_excerpt":"UniVue UniVue 是一个面向 Unity 的运行时通用高性能轻量级的响应式UI框架 UniVue只提供具体的机制，不提供具体的实现。更符合你项目的定制需要你扩展实现内部的接口，这些接口的实现往往也非常简单。 --- 安装 一、方式一 通过PackageManger的 add package from git URL 添加，填写下面的url 二、方式二 下载v3.1.0的版本到你的本地，然后通过PackageManager的 add package from disk 功能 三、方式三 在你项目的Packages目录下创建一个子目录，名称可取 org.avalon712.univue@3.1.0 ，然后下载3.1.0版本到这个目录中，Unity会智能识别package.json而将包添加到你的项目中。 四、 安装需要注意的一些事项 UniVue3.1.0版本依赖了一些其他包，如果Unity未能正确将依赖包拉取下来，你需要手动去添加这些依赖包。如果你本地已经由了Mono.Cecil依赖，但是版本如果报错，可自行修改UniVue的package.json中有关Mono.Cecil的版本号，UniVue依赖的Mono.Cecil为官方提供的标准依赖 com.unity.nuget.mono-cecil 。 协程依赖来自我的另一个作品，链接在这里： Avalon712/VCoroutine: C# Coroutine For Unity3D 如果安装失败，你可以手动在本地添加这个包的依赖。 使用 一、UI的工作流 BaseUI是一个集成所有核心功能的基类，按照模块的概念可将UI拆分为组件Component、界面View和小组件Widget的概念。小组件则是承担了一个很小的功能，比如一个按钮、一个文本、一张图片等等，他们功能单一具体；组件则承担了一些更多的逻辑，界面则是完整一个功能的核心体现。 UI工作流是：搭建UI界面预制体 - 挂载自己的脚本（继承自BaseUI）,如果你想使用UI代码生成功能，可以在UniVue菜单栏中打开 UI Code Export Window 窗口，按照模块的概念组织你的UI模块功能。框架只提供了一个基础的代码生成功能，如果你需要自定义符合你自己的代码逻辑，你可以通过继承 UICodeGenerator 类来实现，你的类将会被自动检查到被进行调用执行你的导出逻辑。你可以决定已何种方式生成代码，内置的导出器将已继承的方式导出。 UIMgr提供了对根界面的管理方式，按照Layer的概念进行组织和划分这些根界面。如果你有自己的层级管理方式，需要实现 IUILayerMgr 接口，设计这一概念的原因是，你可以针对性的做UI的动静分离，Canvas分组渲染以及游戏逻辑的上的区分，比如：弹窗的层级往往比其他界面要高。 如果你需要创建挂载有BaseUI的GameObject，你应该走UIMgr的CreateUI方式，以便BaseUI的回调函数能被正确执行，销毁同样如此。 框架不提供资源管理，因此很大程度上你需要自己实现你的资源管理方式，内部只提供了一个 IUIObjectLoader 接口，由你自己决定怎样去加载一个UI对象，是预制体还是场景中以及存在的，如果是预制体，内部会智能进行实例化。 二、使用响应式API UniVue内部有两个响应式API，一个是事件、一个是数据。当事件触发以及数据变化时都能被正确响应（后文有详细讲解这个机制）。你绑定的函数被称为一个渲染函数，故名思意，他是用于更新UI显示的。 下面是一些API的使用举例：","default_branch":null,"files":null,"tree":[],"storefront":"/r/Avalon712","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/Avalon712/UniVue/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}