ytgame
YouTube Playables SDK 的頂層命名空間。
這是目前視窗中的全域範圍變數。您「不得」覆寫這個變數。
這是目前視窗中的全域範圍變數。您「不得」覆寫這個變數。
| 命名空間 | |
|---|---|
ads
|
🧪 公開預先發布版 API:隨時可能變更,恕不另行通知。 |
engagement
|
與玩家參與度相關的函式和屬性。 |
game
|
與一般遊戲行為相關的函式和屬性。 |
health
|
與遊戲健康狀態相關的函式和屬性。 |
system
|
與 YouTube 系統相關的函式和屬性。 |
| 列舉 | |
|---|---|
Sdk
|
YouTube Playables SDK 擲回的錯誤類型。 |
| 類別 | |
|---|---|
Sdk
|
YouTube Playables SDK 擲回的錯誤物件。 |
| 變數 | |
|---|---|
IN_
|
遊戲是否在「遊戲角落」環境中執行。 |
SDK_
|
YouTube Playables SDK 版本。 |
列舉
Const SdkErrorType
變數
Const IN_PLAYABLES_ENV
IN_PLAYABLES_ENV: boolean
ytgame,確保 SDK 確實已載入。- 範例
-
const inPlayablesEnv = typeof ytgame !== "undefined" && ytgame.IN_PLAYABLES_ENV;
// An example of where you may want to fork behavior for saving data. if (ytgame?.IN_PLAYABLES_ENV) { ytgame.game.saveData(dataStr); } else { window.localStorage.setItem("SAVE_DATA", dataStr); }
Const SDK_VERSION
SDK_VERSION: string
- 範例
-
// Prints the SDK version to console. Do not do this in production. console.log(ytgame.SDK_VERSION);
ytgame.SdkError
延長
Error
| 建構函式 | |
|---|---|
constructor
|
|
| 屬性 | |
|---|---|
error
|
錯誤類型。 |
message
|
|
name
|
|
stack
|
|
屬性
errorType
errorType:
SdkErrorType
ytgame.ads
🧪 公開測試版 API:如有變更,恕不另行通知。
與廣告相關的函式和屬性。
與廣告相關的函式和屬性。
| 函式 | |
|---|---|
request
|
要求顯示插頁式廣告。 |
request
|
要求顯示特定獎勵類型的獎勵廣告。 |
函式
requestInterstitialAd
requestInterstitialAd(): Promise<void>
Experimental 要求顯示插頁式廣告。🧪 公開搶先版 API:如有變更,恕不另行通知。
不保證廣告是否已顯示。請勿使用這個 API,在玩家觀看廣告後給予獎勵。
- 範例
-
try { await ytgame.ads.requestInterstitialAd(); // Ad request successful, do something else. } catch (error) { // Handle errors, retry logic, etc. // Note that error may be undefined. }
| 傳回 | |
|---|---|
Promise<void>
|
如果要求成功,Promise 會解析;如果要求失敗,Promise 則會拒絕/擲回。 |
requestRewardedAd
requestRewardedAd(rewardId: string): Promise<boolean>
Experimental 要求顯示特定獎勵類型的獎勵廣告。🧪 PUBLIC PREVIEW API: SUBJECT TO CHANGE WITHOUT NOTICE.
Makes no guarantees about whether the ad was shown.
- 範例
-
try { const isRewardEarned = await ytgame.ads.requestRewardedAd("21403813-2e22-4316-a8b2-7d4f52a6f6fb"); // Handle reward being earned or not. } catch (error) { // Handle errors, retry logic, etc. // Note that error may be undefined. }
| 參數 | |
|---|---|
rewardId: string
|
必填。可明確識別可領取獎勵類型的 ID。
每種獎勵類型都必須使用專屬 ID,且每次提供該獎勵類型時,都必須重複使用相同 ID。例如:
|
| 傳回 | |
|---|---|
Promise<boolean>
|
如果使用者符合領取獎勵的條件,則承諾會在要求成功時解析為 true 值;如果使用者不符合條件,則解析為 false 值。如果要求失敗,這個 Promise 會拒絕/擲回。 |
ytgame.engagement
與玩家參與度相關的函式和屬性。
| 介面 | |
|---|---|
Score
|
遊戲傳送至 YouTube 的分數物件。 |
| 函式 | |
|---|---|
send
|
將分數傳送至 YouTube。 |
函式
sendScore
sendScore(score: Score): Promise<void>
將分數傳送至 YouTube。
分數應代表遊戲中的某個進度層面。如果有多個維度,開發人員必須選擇其中一個維度,確保一致性。系統會排序分數,並在 YouTube 使用者介面中顯示最高分,因此遊戲內的高分使用者介面應與透過這個 API 傳送的分數一致。
分數應代表遊戲中的某個進度層面。如果有多個維度,開發人員必須選擇其中一個維度,確保一致性。系統會排序分數,並在 YouTube 使用者介面中顯示最高分,因此遊戲內的高分使用者介面應與透過這個 API 傳送的分數一致。
- 範例
-
async function onScoreAwarded(score: number) { try { await ytgame.engagement.sendScore({ value: score }); // Score sent successfully, do something else. } catch (error) { // Handle errors, retry logic, etc. // Note that error may be undefined. } }
| 參數 | |
|---|---|
score:
Score
|
要傳送至 YouTube 的樂譜。 |
| 傳回 | |
|---|---|
Promise<void>
|
如果成功,Promise 會解析;如果失敗,Promise 會拒絕/擲回 ytgame.SdkError。
|
ytgame.engagement.Score
遊戲傳送至 YouTube 的分數物件。
| 屬性 | |
|---|---|
value
|
以整數表示的分數值。 |
屬性
value
value: number
ytgame.game
與一般遊戲行為相關的函式和屬性。
| 函式 | |
|---|---|
first
|
通知 YouTube 遊戲已開始顯示影格。 |
game
|
通知 YouTube 遊戲已準備就緒,可供玩家互動。
|
load
|
以序列化字串的形式從 YouTube 載入遊戲資料。 |
save
|
以序列化字串的形式將遊戲資料儲存至 YouTube。 |
函式
firstFrameReady
firstFrameReady(): void
通知 YouTube 遊戲已開始顯示影格。
遊戲必須呼叫這個 API。否則使用者不會看到遊戲。
遊戲必須呼叫這個 API。否則使用者不會看到遊戲。
firstFrameReady() 必須在 gameReady() 之前呼叫。- 範例
-
function onGameInitialized() { ytgame.game.firstFrameReady(); }
gameReady
gameReady(): void
通知 YouTube 遊戲已準備就緒,可供玩家互動。
遊戲必須在可互動時呼叫這個 API。遊戲不得在載入畫面仍顯示時呼叫此 API。否則遊戲將無法通過 YouTube 認證程序。
遊戲必須在可互動時呼叫這個 API。遊戲不得在載入畫面仍顯示時呼叫此 API。否則遊戲將無法通過 YouTube 認證程序。
- 範例
-
function onGameInteractable() { ytgame.game.gameReady(); }
loadData
loadData(): Promise<string>
以序列化字串的形式從 YouTube 載入遊戲資料。
遊戲必須處理字串與內部格式之間的任何剖析作業。
遊戲必須處理字串與內部格式之間的任何剖析作業。
- 範例
-
async function gameSetup() { try { const data = await ytgame.game.loadData(); // Load succeeded, do something with data. } catch (error) { // Handle errors, retry logic, etc. // Note that error may be undefined. } }
| 傳回 | |
|---|---|
Promise<string>
|
Promise,會在載入成功時完成,並在失敗時以 ytgame.SdkError 拒絕。 |
saveData
saveData(data: string): Promise<void>
以序列化字串的形式將遊戲資料儲存至 YouTube。
字串必須是有效的格式正確 UTF-16 字串,且大小上限為 3 MiB。遊戲必須處理字串與內部格式之間的任何剖析作業。如有需要,請使用
字串必須是有效的格式正確 UTF-16 字串,且大小上限為 3 MiB。遊戲必須處理字串與內部格式之間的任何剖析作業。如有需要,請使用
String.isWellFormed() 檢查字串是否格式正確。- 範例
-
async function saveGame() { try { ytgame.game.saveData(JSON.stringify(gameSave)); // Save succeeded. } catch (error) { // Handle errors, retry logic, etc. // Note that error may be undefined. } }
| 參數 | |
|---|---|
data: string
|
|
| 傳回 | |
|---|---|
Promise<void>
|
Promise,儲存成功時會解析,失敗時則會以 ytgame.SdkError 拒絕。 |
ytgame.health
與遊戲健康狀態相關的函式和屬性。
| 函式 | |
|---|---|
log
|
將錯誤記錄到 YouTube。 |
log
|
向 YouTube 記錄警告。 |
函式
logError
logError(): void
將錯誤記錄到 YouTube。
注意:這個 API 會盡力執行,但有速率限制,因此可能會導致資料遺失。
注意:這個 API 會盡力執行,但有速率限制,因此可能會導致資料遺失。
- 範例
-
function onError() { ytgame.health.logError(); }
logWarning
logWarning(): void
向 YouTube 記錄警告。
注意:這個 API 會盡力執行,但有速率限制,因此可能會導致資料遺失。
注意:這個 API 會盡力執行,但有速率限制,因此可能會導致資料遺失。
- 範例
-
function onWarning() { ytgame.health.logWarning(); }
ytgame.system
與 YouTube 系統相關的函式和屬性。
| 函式 | |
|---|---|
get
|
以 BCP-47 語言代碼的形式,傳回使用者 YouTube 設定中設定的語言。
|
is
|
傳回 YouTube 設定中是否已啟用遊戲音訊。 |
on
|
設定回呼,在 YouTube 觸發音訊設定變更事件時觸發。
|
on
|
設定在 YouTube 觸發暫停遊戲事件時觸發的回呼。
|
on
|
設定在 YouTube 觸發繼續遊戲事件時觸發的回呼。
|
函式
getLanguage
getLanguage(): Promise<string>
以 BCP-47 語言代碼的形式,傳回使用者 YouTube 設定中設定的語言。
請勿使用其他函式判斷使用者的語言或地區,也不要將語言偏好設定儲存在雲端儲存空間。請改用這項函式,確保 YouTube 的使用者體驗一致。
請勿使用其他函式判斷使用者的語言或地區,也不要將語言偏好設定儲存在雲端儲存空間。請改用這項函式,確保 YouTube 的使用者體驗一致。
- 範例
-
const localeTag = await ytgame.system.getLanguage(); // `localeTag` is now set to something like "en-US" or "es-419".
| 傳回 | |
|---|---|
Promise<string>
|
Promise,在取得語言成功時完成,失敗時則會以 ytgame.SdkError 拒絕。 |
isAudioEnabled
isAudioEnabled(): boolean
傳回 YouTube 設定中是否已啟用遊戲音訊。
遊戲應使用此方法初始化遊戲音訊狀態。
遊戲應使用此方法初始化遊戲音訊狀態。
- 範例
-
function initGameSound() { if (ytgame.system.isAudioEnabled()) { // Enable game audio. } else { // Disable game audio. } }
| 傳回 | |
|---|---|
boolean
|
布林值,表示是否已啟用音訊。 |
onAudioEnabledChange
onAudioEnabledChange(callback: ((isAudioEnabled: boolean) => void)): (() => void)
設定回呼,在 YouTube 觸發音訊設定變更事件時觸發。
遊戲必須使用這個 API 更新遊戲音訊狀態。
遊戲必須使用這個 API 更新遊戲音訊狀態。
- 範例
-
ytgame.system.onAudioEnabledChange((isAudioEnabled) => { if (isAudioEnabled) { // Enable game audio. } else { // Disable game audio. } });
| 參數 | |
|---|---|
callback: ((isAudioEnabled: boolean) => void)
|
要觸發的回呼函式。 |
| 傳回 | |
|---|---|
(() => void)
|
取消設定回呼的函式,通常不會使用。 |
onPause
onPause(callback: (() => void)): (() => void)
設定在 YouTube 觸發暫停遊戲事件時觸發的回呼。遊戲在遭逐出前,只有短暫的時間可以儲存任何狀態。
系統會針對所有類型的暫停呼叫 onPause,包括使用者結束遊戲時。我們無法保證遊戲會繼續進行。
系統會針對所有類型的暫停呼叫 onPause,包括使用者結束遊戲時。我們無法保證遊戲會繼續進行。
- 範例
-
ytgame.system.onPause(() => { pauseGame(); }); function pauseGame() { // Logic to pause game state. }
| 參數 | |
|---|---|
callback: (() => void)
|
要觸發的回呼函式。 |
| 傳回 | |
|---|---|
(() => void)
|
取消設定回呼的函式,通常不會使用。 |
onResume
onResume(callback: (() => void)): (() => void)
設定在 YouTube 觸發繼續遊戲事件時觸發的回呼。
遊戲暫停後,不保證會繼續。
遊戲暫停後,不保證會繼續。
- 範例
-
ytgame.system.onResume(() => { resumeGame(); }); function resumeGame() { // Logic to resume game state. }
| 參數 | |
|---|---|
callback: (() => void)
|
要觸發的回呼函式。 |
| 傳回 | |
|---|---|
(() => void)
|
取消設定回呼的函式,通常不會使用。 |