Unity C# | Invoke & InvokeRepeating

更新於 2022/06/18閱讀時間約 1 分鐘

前言

  本篇文章將會告訴你延時方法的呼叫方式,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沒有太難的技術在內。

為什麼會看到廣告
avatar-img
105會員
247內容數
對設計師如何成長為設計師好奇嗎? 2020年九月,我進入大學學習當一位設計師,從開始到沉寂,再到重燃熱忱,我將在方格子紀錄我的成長歷程、理念、心情,分享我在這段旅程中所經歷的故事。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
瓶裝雪的沙龍 的其他內容
本篇文章將會講述UnityEditor的簡單使用方式,並且詳細介紹Unity客製化最核心的機制[MenuItem("")],就由範例與說明帶你快速搞懂Unity Editor到底在設計什麼。
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
本篇文章是Unity Component系列中的第一篇,將會介紹Unity Component中UGUI的Button的各項目介紹,不包含應用。
本文章將藉由我的經歷,講述普通人邁向遊戲設計師的歷程,首先簡單介紹遊戲設計師,再把這段時間的經歷分成五步,從職業基本認識到入門方式一步一步介紹,如果你對遊戲設計有興趣、摸索如何成為遊戲設計師,那我相信這篇文章會適合你。
  這篇文章將介紹public函式應用,回顧保護層級、無類型兩個核心重點,再介紹遊戲製作重點程式(Script),再到控制中心Script製作與方針。
本文章主要介紹保護程式的方法及封裝方法的唯讀屬性。
本篇文章將會講述UnityEditor的簡單使用方式,並且詳細介紹Unity客製化最核心的機制[MenuItem("")],就由範例與說明帶你快速搞懂Unity Editor到底在設計什麼。
本文章將會介紹結構(Struct)的定義、簡單介紹其應用,並且補充與序列化(SerializeFile)結合的方式。
本篇文章是Unity Component系列中的第一篇,將會介紹Unity Component中UGUI的Button的各項目介紹,不包含應用。
本文章將藉由我的經歷,講述普通人邁向遊戲設計師的歷程,首先簡單介紹遊戲設計師,再把這段時間的經歷分成五步,從職業基本認識到入門方式一步一步介紹,如果你對遊戲設計有興趣、摸索如何成為遊戲設計師,那我相信這篇文章會適合你。
  這篇文章將介紹public函式應用,回顧保護層級、無類型兩個核心重點,再介紹遊戲製作重點程式(Script),再到控制中心Script製作與方針。
本文章主要介紹保護程式的方法及封裝方法的唯讀屬性。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
最近ChatGPT-4o的發布引起了我的注意,又在Youtube看上見有人教學如何用ChatGPT設計屬於自己的家教,被他的能力震撼到的我一頭熱就訂閱了plus版然後馬上設計了一個自己的家教。最一開始的時候我只有把它用來學習語言的輔助,但用著用著忽然想到:「如果我把它用來引導我學習我沒有學過的領域呢
Thumbnail
遊戲引擎開發商 Unity 一直是我感覺很有發展潛力的企業,《原神》、《王者榮耀》等明星遊戲都是透過其引擎所建構,在手遊開發領域,擁有絕對統治力。然而,營運實績與線圖走勢卻不是如此,近 8 季毛利成長率有 4 季為負,1Q24 營運收入是近 8 季來最低值,-$375M…
Thumbnail
完成了Debug.log()的測試,接著還是要跟各位簡單講一下C#的一些規則,之後看程式會(比較)看得懂。 又講到變數? 在Unity中,變數是重要的工具,用來儲存和管理資料。讓開發者能夠靈活調整遊戲的行為和性能,減少代碼的重複性,使得遊戲開發更加高效和簡潔。透過使用變數,開發者可以輕鬆修改資料
Thumbnail
前言 這是紀錄本人學習Unity C#時的筆記,希望讓自己能夠整理思緒,方便記憶。 因為是新手自學的關係,也很有可能有誤解或錯誤的地方,請見諒… 類別Class 創造類別之後就可以持續使用創建的類別來創建物件,以武器為例,在遊戲裡有不同的武器,但是他們的屬性是一樣的,我們就可以在一個類別裡面設定不同
Thumbnail
開啟Xampp伺服器,並啟動 apache & mysql mysql建立 開啟Unity 建立 Script toPhp.cs Unity物件 toWeb物件設定 此處需特別留意設定 UItext & MYtext ,否則會出現物件未設定的Null錯誤 Button 設定 test.php con
  透過Unity平台開發出來的遊戲,比較廣為人知,例如憤怒鳥和寶可夢。Unity 的遊戲開發技術,可以刺激遊戲產業,更朝氣蓬勃有效率地開發新遊戲用戶透過遊戲平台,就可以進入元宇宙的世界!
Thumbnail
Unity在這週公布了2022年Q1的財報,財報發布後股價下挫30%,下跌至30美元,已經遠遠跌破兩年前的上市價。Unity雪崩式的下跌是因為Q1的營運不理想、未來的營運預期不理想、還是單純是隨著近期成長股估值修正而下跌呢?這篇文會分析Unity 2022Q1財報及預測Unity未來的營運狀況。