今天在看Unity3d的书,发现上面的调用事件比较特殊,比如说按钮事件

该方法写在OnGUI方法中
if(GUILayout.Button("按钮1"))
{
  //执行事件的处理
}

这样看上去,貌似UnityEngine帮我们把事件改成在OnGUI事件中的让我们自己去监听我们自己创建的控件,想想又想不通,

为什么这样做,于是我便在Console中写了一个闹钟类,模拟了下闹钟的响铃事件,代码如下:

using Microsoft.VisualStudio.DebuggerVisualizers;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms; namespace UnitTest
{ /// <summary>
/// 事件参数类
/// </summary>
public class RingingEventArgs : EventArgs
{
public RingingEventArgs(DateTime dateTime)
{
Time = dateTime;
} public readonly DateTime Time;
} /// <summary>
/// 闹钟类
/// </summary>
public class Alarm
{
//设定的事件列表
private List<DateTime> List=new List<DateTime>(); //增加闹钟的构造函数
public void Add(DateTime dateTime)
{
this.List.Add(dateTime);
} //委托
public delegate void AlarmHandler(object sender, RingingEventArgs e); //事件
public event AlarmHandler Ringing; /// <summary>
/// 调用事件的方法
/// </summary>
/// <param name="eventArgs"></param>
protected virtual void OnRinging(RingingEventArgs eventArgs)
{
if (Ringing!=null)
{
Ringing(this, eventArgs);
}
} /// <summary>
/// 闹钟监测方法
/// </summary>
public void CheckAlarm()
{
while (true)
{
foreach (DateTime dateTime in List)
{
if (dateTime.ToString("yyyy-MM-dd hh:mm") == DateTime.Now.ToString("yyyy-MM-dd hh:mm"))
{
OnRinging(new RingingEventArgs(DateTime.Now));
}
}
}
}
}
}
       //调用检测闹钟方法,触发事件
static void Main(string[] args)
{
Alarm alarm=new Alarm();
alarm.Add(DateTime.Parse("2014-8-8 16:28"));
alarm.Ringing+=alarm_Ringing;
alarm.CheckAlarm();
} private static void alarm_Ringing(object sender, RingingEventArgs e)
{
Console.WriteLine("启用闹钟"+e.Time.ToShortTimeString());
Console.ReadLine();
}

从c#角度事件应该是委托来着,到了UnityEngine中这种方式挺不习惯

c#事件Unity与.Net对比的更多相关文章

  1. Unity热更新对比

    https://www.jianshu.com/p/f9d90edf4a7c Unity 热更新为啥用Lua 详解 ILRuntime的优势 同市面上的其他热更方案相比,ILRuntime主要有以下优 ...

  2. Android中三种onClick事件的实现与对比

    方式一:在activity的onCreate()方法中,嵌入如下代码: Button button = (Button)findViewById(R.id.button1); button.setOn ...

  3. Unity 4.x 各版本IOS IL2CPP对比

    不同Unity版本IL2CPP对比 Unity版本 C++代码总行数 泛型相关行数 Attribute相关行数 IPA大小 纯64位 64位+32位 备注 4.6.4f1 约3302万行 约2508万 ...

  4. 第15.17节 PyQt(Python+Qt)入门学习:PyQt图形界面应用程序的事件捕获方法大全及对比分析

    老猿Python博文目录 老猿Python博客地址 按照老猿规划的章节安排,信号和槽之后应该介绍事件,但事件在前面的随笔<PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法 ...

  5. PyQt(Python+Qt)实现的GUI图形界面应用程序的事件捕获方法大全及对比分析

    一. 概述 PyQt的图形界面应用中,事件处理类似于Windows系统的消息处理.一个带图形界面的应用程序启动后,事件处理就是应用的主循环,事件处理负责接收事件.分发事件.接收应用处理事件的返回结果, ...

  6. 从Unity引擎过度到Unreal4引擎(最终版)

    原文地址:http://demo.netfoucs.com/u011707076/article/details/44036839 前言 寒假回家到现在已经有十多天了,这些天回家不是睡就是吃....哎 ...

  7. JQuery中的事件以及动画

    .bind事件 <script src="script/jquery-1.7.1.min.js"></script> <script> $(fu ...

  8. javascript事件详解1

    事件流讲解来袭,嘎嘎嘎嘎嘎 ---------------------------------------------------------------- 1.事件流:描述的是在页面中接受事件的顺序 ...

  9. JavaScript的事件机制

    JavaScript的事件机制 摘要 事件是将JavaScript脚本与网页联系在一起的主要方式,是JavaScript中最重要的主题之一,深入理解事件的工作机制以及它们对性能的影响至关重要.本文将详 ...

随机推荐

  1. 根据城市表生成json数据

    T_CityManager am = new T_CityManager(); string tou = "var LAreaData=["; string value = &qu ...

  2. MongoDB 比较适用哪些业务场景?

      在云栖社区上发起了一个 MongoDB 使用场景及运维管理问题交流探讨的技术话题,有近5000人关注了该话题讨论,这里就 MongoDB 的使用场景做个简单的总结,谈谈什么场景该用 MongoDB ...

  3. jquery easyui toolbar 分割线问题

    http://bbs.csdn.net/topics/390507228 —————————————————————————————————— 将“<div class="datagr ...

  4. Android 开发 打开默认浏览器发生崩溃

    Android 开发 打开默认浏览器发生崩溃. 代码如下: Intent intent = new Intent(); intent.setAction("Android.intent.ac ...

  5. popupWindow使用timePicker时点击出现闪屏问题的解决办法

    记录一下刚解决的新鲜bug,噔噔噔噔: 首先说明,我并不知道到底是什么原理导致和解决的问题 总之就是,我在使用popupWindow时的弹出方法使用的是popupWindow.showAsDropDo ...

  6. JSONObject遍历获取键值方法合并两个JSONObject

    JSONObject obj1= new JSONObject(); try { obj1.put("obj1_data", obj1_data); if (null != obj ...

  7. .NET Framework posters with Namespaces & Types

    Framework is platform containing a huge library of types, methods, classes, etc., cataloged into nam ...

  8. Mac OS, Mac OSX 与Darwin

    作为收购 NeXT 公司的结果,苹果公司获得了 NeXTSTEP 架构中的 Mach 和 Objective-C 等设计.尽管 NeXTSTEP 本身已经不再发展了,但是其中的组件在 OS X 中获得 ...

  9. Union和Union All的区别[转]

    来源:http://blog.csdn.net/wanghai__/article/details/4712555/ 假设我们有一个表Student,包括以下字段与数据: drop table stu ...

  10. Python模拟Linux的Crontab, 写个任务计划需求

    Python模拟Linux的Crontab, 写个任务计划需求 来具体点 需求: 执行一个程序, 程序一直是运行状态, 这里假设是一个函数 当程序运行30s的时候, 需要终止程序, 可以用python ...