今天在看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. 【linux】——FTP出现500 OOPS: cannot change directory的解决方法

    cannot change directory:/home/*** ftp服务器连接失败,错误提示: 500 OOPS: cannot change directory:/home/******* 5 ...

  2. 【oneday_onepage】——美国主食吃什么

    Cocktail 鸡尾酒 It is quite usual to drink cocktails before lunch and dinner in America and somewhat le ...

  3. [hadoop读书笔记] 第十五章 sqoop1.4.6小实验 - 数据在mysq和hdfs之间的相互转换

    P573 从mysql导入数据到hdfs 第一步:在mysql中创建待导入的数据 1.创建数据库并允许所有用户访问该数据库 mysql -h 192.168.200.250 -u root -p CR ...

  4. 【转】【WPF】WPF MVVM 简单实例

    1 新建WPF 应用程序WPFMVVMExample 程序结构如下图所示. 2 Model实现 在Model文件夹下新建业务类StudentModel(类文件StudentModel.cs),类的详细 ...

  5. Android WiFi 日志记录(ASSOC_REJECT)

    记录Android N关联拒绝之后的相关的log. 10-26 20:35:35.844 2215 2215 D wpa_supplicant: * bssid_hint=44:48:c1:d6:57 ...

  6. e618. Validating a JTextField When Permanently Losing the Focus

    This example demonstrates a text field that validates its contents when it receives a permanent focu ...

  7. EF + MySql 错误:配置错误 无法识别的元素“providers”

    “/”应用程序中的服务器错误. 配置错误 说明: 在处理向该请求提供服务所需的配置文件时出错.请检查下面的特定错误详细信息并适当地修改配置文件. 分析器错误消息: 无法识别的元素“providers” ...

  8. Python学习注脚

    python版本:2.7.6 Python基础学习书摘. 变量命名规范: python的变量名只能由字母和数字组成,且必须以字母开头. python的变量名不能使用系统已有的关键字,包括: and c ...

  9. POJ1157 LITTLE SHOP OF FLOWERS DP

    题目 http://poj.org/problem?id=1157 题目大意 有f个花,k个瓶子,每一个花放每一个瓶子都有一个特定的美学值,问美学值最大是多少.注意,i号花不能出如今某大于i号花后面. ...

  10. Redis集群的操作

    1.原始集群 1.1    启动Redis集群 [root@cent03 ~]# /usr/local/redis/bin/redis-server /usr/local/redis-cluster/ ...