Unity3D的Delegate和SendMessage的性能差测试,以及Delegate在多线程使用要注意的小问题

本文回顾了Delegate消息传递的优化,通过测试对比了Delegate和SendMessage在性能上的差异。在多线程环境下使用Delegate需要注意,Unity3D的MonoBehaviour快捷API只能在主线程调用,尝试在其他线程启动Coroutine会导致错误。此外,多线程中Delegate响应可能引发对未初始化的MonoBehaviour对象的空引用错误。
摘要由CSDN通过智能技术生成

一、回顾前面写的关于Delegate的消息传送优化文章,http://blog.csdn.net/chiuan/article/details/7883449 

下面的代码是做一个简单的Delegate和SendMessage之间的优化性能差距测试:

using UnityEngine;
using System.Collections;
/// <summary>
/// Delegate basic.
/// just test Delegate && SendMessage ..
/// 
/// By Chiuan 2012.8
/// </summary>
public class DelegateBasic : MonoBehaviour {
	
	//define my delegate statement.
	public delegate void MyDelegate(string arg1);
	
	//create my delegate object
	public MyDelegate myDelegate;
	
	//need some values to debug time spent.
	bool isStart;
	float timeStart;
	int count;
	
	bool isStartSendMessage;
	
	// Use this for initialization
	void Start () {
		myDelegate += myFunciton1;
		//myDelegate += myFunciton2;
	}
	
	// Update is called once per frame
	void Update () {
		if(isStart )
		{
	
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值