本文章由cartzhang編寫,轉載請注明出處。 所有權利保留。?
文章鏈接:?[http://blog.csdn.net/cartzhang/article/details/50686627](http://blog.csdn.net/cartzhang/article/details/50686627)?
作者:cartzhang
網上直接搜的代碼。需要的使用也簡單,所以就不過多說明。?
但是網上都說,他們之間的差距,delegate比較快,效果高。怎么個高法呢?還是自己來測試下時間。?
故此,?
個人之用來比較下時間差別。
### 一、直接代碼
~~~
using UnityEngine;
using System.Collections;
/// <summary>
/// Delegate basic.
/// just test Delegate && SendMessage ..
///
/// By Chiuan 2012.8
/// </summary>
public class DelegateBasic : MonoBehaviour
{
static int loopNumber = 5000000;
//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)
{
isStart = false;
count = 0;
timeStart = Time.realtimeSinceStartup;
Debug.Log("Start = " + timeStart);
for (int i = 0; i < loopNumber; i++)
{
if (myDelegate != null) myDelegate("");
}
}
if (isStartSendMessage)
{
isStartSendMessage = false;
count = 0;
timeStart = Time.realtimeSinceStartup;
Debug.Log("Start = " + timeStart);
for (int i = 0; i < loopNumber; i++)
{
this.gameObject.SendMessage("myFunciton1", "", SendMessageOptions.DontRequireReceiver);
}
}
}
void OnGUI()
{
if (GUILayout.Button("INVOKE Delegate"))
{
isStart = true;
}
if (GUILayout.Button("SendMessage"))
{
isStartSendMessage = true;
}
}
void myFunciton1(string s)
{
count++;
if (count == loopNumber)
{
Debug.Log("End = " + Time.realtimeSinceStartup);
Debug.Log("Time Spent = " + (Time.realtimeSinceStartup - timeStart));
}
}
}
~~~
### 二、說明
代碼基本沒有做更改,刪掉了沒用的函數。也名字也帶著呢!!在此表示感謝!!!
但說道具體測試,要每次都需要重新開始,才能計時。要不就會有問題,后測試的就會產生多次循環。
### 三、效率比較
系統配置:”Win7 64位,i7處理器 16G內存,英偉達660顯卡”

對比為倍數關系!!也就說,隨著次數增加,效率差距越來越大!!!
### 相關鏈接:
[https://unity3d.com/cn/learn/tutorials/modules/intermediate/scripting/delegates](https://unity3d.com/cn/learn/tutorials/modules/intermediate/scripting/delegates)
[http://www.xuanyusong.com/archives/1895/](http://www.xuanyusong.com/archives/1895/)
[http://blog.csdn.net/chiuan/article/details/7918833](http://blog.csdn.net/chiuan/article/details/7918833)
若有問題,請隨時聯系!!!?
再次表示感謝!!!
- 前言
- Unity隨機Prefab,自動前往某點處理
- Unity導入FBX自動進行動畫切分
- Unity5中的粒子縮放(附測試源碼)
- Unity和虛幻的比較
- Unity 實現Log實時輸出到屏幕或控制臺上&lt;一&gt;
- Unity 實現Log實時輸出到屏幕或控制臺上&lt;二&gt;
- Unity的Json解析<一>--讀取Json文件
- Unity的Json解析<二>–寫Json文件
- Unity 的OCulus VR開發遇到的坑---OC版本差異
- Unity中一鍵創建常用文件夾
- Unity版本與虛擬現實頭盔Deepoon大朋版本測試
- Unity 多場景打包
- Untiy中的數據平滑處理
- Unity中SendMessage和Delegate效率比較