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
参考
- https://docs.unity.cn/cn/Packages-cn/[email protected]/cn/manual
- https://github.com/Unity-Technologies/com.unity.uiwidgets
- https://unity.cn/uiwidgets