unicorn代码库使用方法教程,包括:
- UIManager:UI框架
- Metadata:配置管理
- WebManager:资源加载
制作UI之前,需要先设置好UICamera(用于显示2D界面)与Main Camera(用于显示3D界面)
- 在场景中创建一个名为UICamera的节点,添加Camera组件,删除Listener组件:
- Render Type: Overlay
- Projection:
- Projection: Orthographic
- Size: 5
- Clipipling Planes: [-100, 100]
- Rendering:
- Clear Depth: ✓
- Culling Mask: UI
- 在场景中找到Main Camera节点:
- Render Type: Base
- Rendering:
- Culling Mask: 把UI剔除
- Stack: 添加UICamera
- 在场景中创建一个名为UIRoot的空节点
- 在Hierarchy窗口中,右键UIRoot,选择UI→UI Canvas,设置Canvas组件的Render Mode为Screen Space - Camera,命名为uibag
- 右键uibag,选择UI→UI Panel,创建窗体背景面板。Panel=背景+鼠标事件拦截,但不是必须的
- 在panel下面可以创建各类UI控件,从而完成窗体样式的创建
- 如果需要窗体打开/关闭动画,则需要在uibag上加UISerializer组件,并完善Open Window Animaion和Close Window Animation
public class UIBag: UIWindowBase
{
// 如果UIRoot的直接子节点存在以assetPath命名的Canvas节点,则直接使用该节点,这意味着UI界面是随场景加载进来的
// 否则assetPath被当作UI资源的路径,会动态从addressable加载
public override string GetAssetPath()
{
return "Assets/res/prefabs/ui/uibag.prefab";
}
}
// 打开UI
UIManager.Instance.OpenWindow(typeof(UIBag));
// 关闭UI
UIManager.Instance.CloseWindow(typeof(UIBag));
3D界面与2D界面的制作过程几乎完全一样,有2点区别:
- Canvas设置:
- Render Mode:设置为World Space,这是因为界面需要在3D场景中显示
- RectTransform:修改Scale到合适大小,我的习惯是0.01;PosX, PosY, PosZ代表窗体在场景中的位置,可先重置为(0, 0, 0)再调
- Scene场景的2D模式下使用Rect Tool代替Move Tool移动
- 我们通常会使用2D模式添加或修改UI界面中的控件,由于制作的是3D界面,Move Tool很容易把控件移出到panel外面
如果uibag等prefab上的脚本丢失,这是因为Unicorn.dll是先于ugui的代码导入的,解决方法为:选中Unicorn.dll → 右键Reimport
- MVC流程
- Metadata使用流程
- Kit解耦方案
- UI本地化支持