unity界面和代码分离解决方案

新手或者小规模的游戏喜欢使用SetActive或者Instantiate prefab来切换界面,这样可以,但是不灵活,也不规范,碰到大量代码的时候就会力不从心。所谓界面与代码分离也就是将界面用代码封装起来,再通过一个管理器来控制,方便其他程序的调用和控制介绍一下大体设计方法,让大家有一个宏观的观念界面一共分为两种 1.Panel 面板 比如登陆面板,注册面板,进入游...
摘要由CSDN通过智能技术生成

新手或者小规模的游戏喜欢使用SetActive或者Instantiate prefab来切换界面,这样可以,但是不灵活,也不规范,碰到大量代码的时候就会力不从心。


所谓界面与代码分离也就是将界面用代码封装起来,再通过一个管理器来控制,方便其他程序的调用和控制


介绍一下大体设计方法,让大家有一个宏观的观念


界面一共分为两种
    1.Panel 面板
        比如登陆面板,注册面板,进入游戏的主菜单面板,画面设置面板等等,即拥有一定相关功能的界面模块
    2.Tip 提示
        比如错误提示,胜利提示,失败提示,好友消息等等,即主要功能只是反馈数据信息的小界面


所有界面类都将继承PanelBase基类,通过修改每个子类的Layer枚举类型字段来设置是Panel还是Tip(PanelBase可能有歧义,但是他是所有UI的Base)


所有的UI类都继承MonoBehaviour,脚本统一挂到Canvas画布上,用PanelMgr管理类通过一个字典<string,PanelBase>来控制,界面的UI也就是具体的GameObject则是脚本内的一个GameObject字段,具体的其他按钮什么的通过该字段的Transform缓存后在实例时查找赋值
这两种Panel和Tip界面分别属于Canvas/Panel和Canvas/Tip两个GameObject的子物体,用PanelMgr管理类通过一个字典<PanelLayer,Transform>来控制
生命周期可以用子类的重写


好,下面上代码,让我们看一下详细的设计方法

public enum PanelLayer
{
    Panel,        //面板
    Tip,         //提示
}


UI基类

 

public class PanelBase : MonoBehaviour {


    //皮肤路径
    public string skinPath;
    //皮肤
    public GameObject skin;
    //层级
    public PanelLayer layer;
    //面板参数
    public object[] args;


    #region 生命周期
    public virtual void Init(params object[] args)   //自定义参数
    {
        this.args = args;
    }


    //开始面板前
    public virtual void OnShowing() { }


    //显示面板后
    public virtual void OnShowed() { }


    //帧更新
    public virtual void Update() { }


    //关闭前
    public virtual void OnClosing() { }


    //关闭后
    public virtual void OnClosed() { }
    #endregion


    #region 操作
    protected virtual void Close()
    {
        string name = this.GetType().ToString();   //反射
        PanelMgr.Instance.ClosePanel(name);
    }
    #endregion
}



关于子类如何重写来使用,这里先留一个悬念,最后我们在举一个例子看看怎么用


管理类

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity游戏主界面场景的搭建可以分为以下几个步骤: 1. 创建一个新场景:在Unity编辑器中,点击“File” -> “New Scene”创建一个新的场景。 2. 添加UI元素:从Unity的“GameObject”菜单中,选择“UI” -> “Canvas”创建一个画布,可以调整画布的大小和位置,然后从“GameObject”菜单中选择“UI” -> “Text”添加一些文本框,从“GameObject”菜单中选择“UI” -> “Image”添加一些图片等。 3. 设置UI元素的属性:在Hierarchy面板中选中UI元素,从Inspector面板中设置属性,比如位置、大小、文本内容、字颜色等。 4. 添加脚本:如果需要对UI元素进行交互,可以添加脚本来实现。从“GameObject”菜单中选择“Create Empty”创建一个空物,然后将脚本添加到该物上。在脚本中定义UI元素的交互行为,比如点击按钮时触发的事件。 5. 运行游戏:在Unity编辑器中点击“Play”按钮,运行游戏,可以在游戏中查看UI元素的效果。 下面是一个简单的示例代码,演示如何在Unity中创建一个文本框和一个按钮,并实现点击按钮时改变文本框的内容: ```csharp using UnityEngine; using UnityEngine.UI; public class MainUI : MonoBehaviour { public Text text; public Button button; void Start() { // 获取文本框和按钮组件 text = GetComponent<Text>(); button = GetComponent<Button>(); // 添加点击事件 button.onClick.AddListener(OnClick); } void OnClick() { // 改变文本框内容 text.text = "Hello World!"; } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值