Unity C# | Invoke & InvokeRepeating

更新於 發佈於 閱讀時間約 5 分鐘

前言

  本篇文章將會告訴你延時方法的呼叫方式,Invoke是一種讓函式(function)延時啟動的官方函式,通常用於延後幾秒鐘啟動或用InvokeRepeating定時啟動函式,遊戲中常用於怪物的定時召喚或延遲觸發機關等等。

public void Invoke(string methodName, float time);
public void InvokeRepeating(string methodName, float time, float repeatRate);

Invoke

  這個英文的中文翻譯為「調用」,本身就有呼叫某種東西的涵義在內,而在程式中則是用於延遲幾秒鐘後呼叫指定函式(function),在官方的教學則是定時呼叫隨機位置的敵人。

  調用(Invoke)為MonoBehaviour中的函式,使用方式如下所示:

using UnityEngine;
using System.Collections.Generic;

public class ExampleScript : MonoBehaviour
{
// Launches a projectile in 2 seconds

Rigidbody projectile;

void Start()
{
Invoke("LaunchProjectile", 2.0f);
}

void LaunchProjectile()
{
Rigidbody instance = Instantiate(projectile);
instance.velocity = Random.insideUnitSphere * 5.0f;
}
}

  官方示範了「用於給予實例隨機速度」,insideUnitSphere為在一個球體範圍內的隨機點,本篇不過多細說。

  其核心的程式碼為:

Invoke("LaunchProjectile", 2.0f);
Invoke("函式(function)名稱",延時秒數);

注意事項:

  • 如果時間設置為0,會在Update下一禎觸發。
  • 如果時間設置為負數,則等同於0。
  • 如果用於傳遞參數,更好的做法是使用「Coroutine」(本篇不介紹)

InvokeRepeating

  這個英文的中文翻譯為「重複調用」,為Invoke的重複版本,除了一開始的延時啟動的時間,還有每隔幾秒的調用的間隔秒數。

  重複調用(InvokeRepeating)為MonoBehaviour中的函式,使用方式如下所示:

using UnityEngine;
using System.Collections.Generic;

// Starting in 2 seconds.
// a projectile will be launched every 0.3 seconds

public class ExampleScript : MonoBehaviour
{
public Rigidbody projectile;

void Start()
{
InvokeRepeating("LaunchProjectile", 2.0f, 0.3f);
}

void LaunchProjectile()
{
Rigidbody instance = Instantiate(projectile);

instance.velocity = Random.insideUnitSphere * 5;
}
}

  官方示範了「延時3秒後,每隔0.3秒鐘給予實例隨機速度」

InvokeRepeating("LaunchProjectile", 2.0f, 0.3f);
InvokeRepeating("函式(function)名稱", 延時啟動秒數 , 間隔啟動秒數);

注意事項: (基本上等同於Invoke)

  • 如果間隔秒數為0,則本程式不作用。

應用:簡易計時器

private int second;

start
{
  InvokeRepeating("timer",0,1);
}

private void timer()
{
  second++;
  Debug.Log("現在時間為:"+second+"秒鐘");
}

後記

  在撰寫這篇文章的時候,我發現自己可以很順暢的一直撰寫下去,我相信我的程式能力已經有足夠的水準,足以讓我邊學習邊成長,又或許只是因為Invoke沒有太難的技術在內。



raw-image



留言
avatar-img
留言分享你的想法!
avatar-img
瓶裝雪的沙龍
109會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
瓶裝雪的沙龍的其他內容
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/09/22
魔火術師是第三人稱動作射擊遊戲,屬於專題畢業製作,在畢業組成新的團隊後優化並上架。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2024/01/26
這篇文章將會講述虛擬(virtual)與覆蓋(override)的簡易使用方式。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
2023/12/29
講述遊戲設計從新手到專業的發展方向。
Thumbnail
看更多
你可能也想看
Thumbnail
新版Input System 要先來調整設定: (如果日後發現移動不了,可能是這邊有出問題,可以把這邊視為一個檢查點) 下載Input System 在script中的寫法: (這邊的功能是讀取移動的值而已,主要目的是讓unity讀到movement,絕對不是托篇幅的拉🥺) using
Thumbnail
新版Input System 要先來調整設定: (如果日後發現移動不了,可能是這邊有出問題,可以把這邊視為一個檢查點) 下載Input System 在script中的寫法: (這邊的功能是讀取移動的值而已,主要目的是讓unity讀到movement,絕對不是托篇幅的拉🥺) using
Thumbnail
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
Thumbnail
  當我們要使用執行緒的時候,就要引用System.Threading的類別庫,程式才可以使用唷!這篇內容先說明:建立與啟用執行緒、跨執行緒控制UI介面、等待或暫停時間執行緒、共享資源的部分。
Thumbnail
UnityEvent 簡單介紹。
Thumbnail
UnityEvent 簡單介紹。
Thumbnail
這篇文章將會講述 Unity Event 的介紹及基礎使用方法。
Thumbnail
這篇文章將會講述 Unity Event 的介紹及基礎使用方法。
Thumbnail
前言   這篇文章將會介紹生成物件的五種多載說明和三種應用流程。 Instantiate | 生成遊戲物件   這個英文單字的中文翻譯為「實例化」,如果單純用於 GameObject 的話你可以叫他生成物件,不過 Instatiate 還有其他的功用,像是 Clone 腳本和泛型化,這個就不在我們今
Thumbnail
前言   這篇文章將會介紹生成物件的五種多載說明和三種應用流程。 Instantiate | 生成遊戲物件   這個英文單字的中文翻譯為「實例化」,如果單純用於 GameObject 的話你可以叫他生成物件,不過 Instatiate 還有其他的功用,像是 Clone 腳本和泛型化,這個就不在我們今
Thumbnail
介紹 委派的非同步方法 可以透過BeginInvoke執行委派的非同步方法 Action<T>.BeginInvoke(<T> obj,AsyncCallback callback,Object @object) 第一個內容的 obj,只的是要傳入acction委派的參數 第二個AsyncCallb
Thumbnail
介紹 委派的非同步方法 可以透過BeginInvoke執行委派的非同步方法 Action<T>.BeginInvoke(<T> obj,AsyncCallback callback,Object @object) 第一個內容的 obj,只的是要傳入acction委派的參數 第二個AsyncCallb
Thumbnail
這篇文章將會介紹 Unity Animatior Edit 參數控制的方法,藉由連結程式腳本和動畫編輯器,讓動畫更靈活的運作。
Thumbnail
這篇文章將會介紹 Unity Animatior Edit 參數控制的方法,藉由連結程式腳本和動畫編輯器,讓動畫更靈活的運作。
Thumbnail
介紹 類似Windows排程的一個套件,不過他有Dashboard可以看 可以用在商業用途 使用情境 簡單來說如果你需要定時的執行某一段程式就可以使用這個套件來幫你完成。 優點 Simple 開發簡易、安裝簡單、方便部署 Persistent 工作任務可存放於多種儲存裝置 任務執行方式 版本 📷
Thumbnail
介紹 類似Windows排程的一個套件,不過他有Dashboard可以看 可以用在商業用途 使用情境 簡單來說如果你需要定時的執行某一段程式就可以使用這個套件來幫你完成。 優點 Simple 開發簡易、安裝簡單、方便部署 Persistent 工作任務可存放於多種儲存裝置 任務執行方式 版本 📷
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News