今天在看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. es 加磁盘扩容

    elasticsearch多磁盘扩容   1.问题 由于早前elasticsearch集群数据存储路径只配置了一个,所以某天磁盘突然爆满,集群差点当机.需重新配置多路径存储路径,因为在生产环境,得保证 ...

  2. PCL中分割方法的介绍(3)

    (3)上两篇介绍了关于欧几里德分割,条件分割,最小分割法等等还有之前就有用RANSAC法的分割方法,这一篇是关于区域生成的分割法, 区 域生长的基本 思想是: 将具有相似性的像素集合起来构成区域.首先 ...

  3. kindle书摘-围城-相爱勿相伤

    https://github.com/starrtc/android-demo 围城(爱熄灭了灯,心围一座城.出版七十周年纪念版) (钱钟书) - 您在位置 #49-49的标注 | 添加于 2018年 ...

  4. 如何在Linux系统上安装字体

    libreoffice添加字体 TrueType字体文件的扩展名是.ttf,ttf就是TrueType Font的首字母缩写 一般在 /usr/share/fonts/truetype/ 目录下,这个 ...

  5. PHP和MySQL实现消息队列

    最近遇到一个批量发送短信的需求,短信接口是第三方提供的.刚开始想到,获取到手机号之后,循环调用接口发送不就可以了吗? 但很快发现问题:当短信数量很大时,不仅耗时,而且成功率很低. 于是想到,用PHP和 ...

  6. e795. 获得和设置JSlider的值

    // To create a slider, see e794 创建JSlider组件 // Get the current value int value = slider.getValue(); ...

  7. firefox插件-HackBar介绍与试用

    This toolbar will help you in testing sql injections, XSS holes and site security. It is NOT a tool ...

  8. 汉语拼音转换工具(Python 版)

    汉语拼音转换工具(Python 版) http://pypinyin.readthedocs.org/en/latest/

  9. par函数mgp 参数-控制坐标轴的位置

    mgp 参数的值为长度为3的一个向量,默认值为 c(3, 1, 0); 3个数值控制的元素不同 1) 第一个数值:3, 控制xlab 和  ylab的位置 示例用法: par(mfrow = c(1, ...

  10. C# 从类库中获取资源图片,把图片资源保存到类库中

    /// <summary> /// 获取资源图片 /// </summary> public class AssemblyHelper { #region 常量 /// < ...