Unity-UIWidgets2 介绍

UIWidgets是Unity编辑器的一个插件包,可帮助开发人员通过Unity引擎来创建、调试和部署高效的跨平台应用。

UIWidgets主要借鉴并基于Flutter技术。但UIWidgets通过使用强大的Unity引擎为开发人员提供了许多新功能,显著地改进他们开发的应用性能和工作流程。

从自身描述来看UIWidgets针对人机交互界面领域中,新的UI Toolkit(ugui过时的)同类来看有些不同,这主要很大借鉴flutter。

uiwidgets在unity中能做到和flutter效果,对移动设备(多平台)表现/适配更具优势,如下:

在我看来UI toolkit像xml组合ui似网页方式,c#来承担脚本,uss承担样式,uxml承担布局,而uiwidgets大致由Code来驱动界面,也是flutter的核心万物widget概念,由一个个组件来支撑ui。因此uiwidgets有着天然入门门槛,它合适“开发者”而不是“艺术家”。

我们来看看uiwidgets的书写方式就能清楚了。

public class UIWidgetsDemo : UIWidgetsPanel
    {
        protected void OnEnable()
        {
            base.OnEnable();
        }

        protected override void main()
        {
            ui_.runApp(new MyApp());
        }

        class MyApp : StatelessWidget
        {
            public override Widget build(BuildContext context)
            {
                return new WidgetsApp(
                    home: new ExampleApp(),
                    color: Color.black,
                    pageRouteBuilder: (settings, builder) =>
                        new PageRouteBuilder(
                            settings: settings,
                            pageBuilder: (Buildcontext, animation, secondaryAnimation) => builder(context)
                        )
                );
            }
        }

        class ExampleApp : StatefulWidget
        {
            public ExampleApp(Key key = null) : base(key)
            {
            }

            public override State createState()
            {
                return new ExampleState();
            }
        }

        class ExampleState : State<ExampleApp>
        {
            int counter;

            public override Widget build(BuildContext context)
            {
                return new Container(
                    color: Color.white,
                    child: new Column(
                        children: new List<Widget>
                        {
                            new Text("Counter: " + counter,
                                     style: new TextStyle(fontSize: 20, color: Color.black,fontWeight: FontWeight.w100)),

                            new GestureDetector(
                                onTap: () =>
                                {
                                    setState(() =>
                                    {
                                        counter++;
                                    });
                                },
                                child: new Container(
                                    padding: EdgeInsets.symmetric(20, 20),
                                    color: counter % 2 == 0 ? Color.fromARGB(255, 0, 255, 0) : Color.fromARGB(255, 0, 0, 255),
                                    child: new Text("Click Me",
                                                    style: new TextStyle(fontFamily: "racher", fontWeight: FontWeight.normal))
                                )
                            )
                        }
                    )
                );
            }
        }
    }

读过上面代码估计劝退不少人,从uiwidgets实现ui的方法来看,有点像大炮打苍蝇。同时去维护这样的游戏ui估计不少成本,但至少不是不可行。毕竟ui Toolkit也差不多?

到目前来说uiwidgets有待发展,毕竟文档对新人不友好,如果不熟悉flutter前提下使用uiwidget还需要查flutter文档。

未来uiwidgets更加需要对自身内置友好注释,毕竟flutter的源码内就注明大量文档:D

参考

  1. https://docs.unity.cn/cn/Packages-cn/com.unity.uiwidgets@2.0/cn/manual
  2. https://github.com/Unity-Technologies/com.unity.uiwidgets
  3. https://unity.cn/uiwidgets

转载注明

转载请注明: 转载自Cabbagelol 后院

本文链接地址: Unity-UIWidgets2 介绍

捐助 ↗

博客捐助

站点简介

负责记录Cabbagelol的总结,或者共享有趣的内容,这就是后院的最重要做的事情⁄(⁄ ⁄•⁄ω⁄•⁄ ⁄)⁄。

线上游客

目前实时游客: 1

联系

📮: nickmiku@foxmail.com

📮: qwqpwp@qq.com

其他

备案:粤ICP备15107172号

Copyright © 2015 - 2024 Cabbagelol. All Rights Reserved. Powered By Wordpress(EverBox).