首页 技术 正文
技术 2022年11月12日
0 收藏 571 点赞 3,004 浏览 1426 个字

在网上随便搜一搜资料就可以找到很多关于Mvc ,MVVM,StrangeIoc等有关显示与数据分离的博客,很多大神也是讲的蛮有道理的,但是这些框架理解起来有一定的难度,

这时候肯定有人说有现成的框架为什么不用,不用管它怎么实现的知道怎么用就行了,就我个人而言我也想用,比如去年unity开发者大会上unity开发者提出的uframe这个插件,我也曾具

体查过这个插件,大家对他的评价还是肯定的,但是国内用这个插件的人不是很多,并且全国所有网站上的文章有关于uframe的只有一个人写过,我也按照博客上写的具体进行操作了,可是

并没有实现成功,可能是的版本问题,也可能是版本的问题…所以我就有了这篇博客,一篇关于事件在u3d中的一些应用

下面简单的说一些我的思路!

ui的事件所有事件触发全部在放在一个类里面,类似的声音管理的全部放在一个类里,在外部类ui事件触发的地方只需要调用事件即可,在其他地方绑定自己的事件

这样简单的逻辑就可以实现不用管理事件处理的内容

首先写一个类定义所有的ui委托(也可以写在其它类的外部)

 /// <summary>
/// 无参数的ui事件
/// </summary>
public delegate void UIDelegateNoParameters(); /// <summary>
/// 有参数的ui事件
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="t"></param>
public delegate void UIDelegate<T>(T t);

下面是委托实现的单例类,用来定义事件和调用事件的函数

 using UnityEngine; /// <summary>
/// ui所有的事件
/// </summary>
public class UIEvent
{
#region 类的单例
private UIEvent()
{ }
private static UIEvent _instance;
public static UIEvent GetInstance
{
get
{
if (_instance == null)
{
_instance = new UIEvent();
} return _instance;
} }
#endregion #region 第一个界面button事件
public event UIDelegateNoParameters ButDebug;
public void ButDebugImplement()
{
if (ButDebug != null)
{
ButDebug();
}
else
{
Debug.Log("事件为空");
}
}
#endregion
}

事件已经定义了,我们再来在场景里面定义一个button(先简单的实现)

按钮的怎么触发就不用讲了吧,不会的可以在下面评论或者去百度谷歌都是可以的

下面来看事件的触发

  public void OnClck()
{
UIEvent.GetInstance.ButDebugImplement();
}

然后就是绑定事件了

 void Start ()
{
UIEvent.GetInstance.ButDebug += ck;
} private void ck()
{ Debug.Log("执行了");
}

代码就是简单的打印了一句话

现在我们来整理一下思路:首先我们定义了事件,,然后给事件绑定了函数.点击按钮的触发了事件

思路so easy,,,不出意外的话最后应该是会打印出 执行了 这句话

那我们来看一下结果

unity 实现简单的分离

结果很明显和我们想的一样

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,493
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295