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
|
要求顯示插頁式廣告。 |
函式
requestInterstitialAd
requestInterstitialAd(): Promise<void>
Experimental
要求顯示插頁式廣告。🧪 公開預覽版 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>
|
在成功要求中解析的承諾,或在失敗要求中拒絕/擲回的承諾。 |
ytgame.engagement
與玩家參與度相關的函式和屬性。
介面 | |
---|---|
Content
|
遊戲傳送至 YouTube 的內容物件。 |
Score
|
遊戲傳送至 YouTube 的分數物件。 |
函式 | |
---|---|
open
|
要求 YouTube 開啟與提供的影片 ID 相對應的內容。
|
send
|
將分數傳送至 YouTube。 |
函式
openYTContent
openYTContent(content: Content): Promise<void>
要求 YouTube 開啟與所提供影片 ID 相對應的內容。
一般來說,這會在網頁的新分頁和行動裝置的迷你播放器中開啟影片。
一般來說,這會在網頁的新分頁和行動裝置的迷你播放器中開啟影片。
- 範例
-
async function showVideo(videoID: string) { try { await ytgame.engagement.openYTContent({ id: videoID }); // Request successful, do something else. } catch (error) { // Handle errors, retry logic, etc. // Note that error may be undefined. } }
參數 | |
---|---|
content:
Content
|
在 YouTube 上開啟的內容。 |
傳回 | |
---|---|
Promise<void>
|
成功時會解析的 Promise,失敗時會拒絕/擲回 ytgame.SdkError 。 |
sendScore
sendScore(score: Score): Promise<void>
將分數傳送至 YouTube。
分數應代表遊戲中進度的一個維度。如果有多個維度,開發人員必須選擇一個維度以保持一致性。系統會排序分數,並在 YouTube UI 中顯示最高分數,因此任何遊戲內最高分數 UI 都應與透過此 API 傳送的內容一致。
分數應代表遊戲中進度的一個維度。如果有多個維度,開發人員必須選擇一個維度以保持一致性。系統會排序分數,並在 YouTube UI 中顯示最高分數,因此任何遊戲內最高分數 UI 都應與透過此 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,失敗時會拒絕/擲回 ytgame.SdkError 。 |
ytgame.engagement.Content
遊戲傳送至 YouTube 的內容物件。
屬性 | |
---|---|
id
|
要開啟的影片 ID。 |
屬性
id
id: string
ytgame.engagement.Score
遊戲傳送至 YouTube 的分數物件。
屬性 | |
---|---|
value
|
以整數表示的分數值。 |
屬性
value
value: number
ytgame.game
與一般遊戲行為相關的函式和屬性。
函式 | |
---|---|
first
|
通知 YouTube 遊戲已開始顯示影格。 |
game
|
通知 YouTube 遊戲已準備好供玩家互動。
|
load
|
以序列化字串的形式從 YouTube 載入遊戲資料。 |
save
|
以序列化字串的形式將遊戲資料儲存到 YouTube。 |
函式
firstFrameReady
firstFrameReady(): void
通知 YouTube 遊戲已開始顯示影格。
遊戲「必須」MUST呼叫此 API。否則,系統不會向使用者顯示遊戲。
遊戲「必須」MUST呼叫此 API。否則,系統不會向使用者顯示遊戲。
firstFrameReady()
MUST在 gameReady()
之前呼叫。- 範例
-
function onGameInitialized() { ytgame.game.firstFrameReady(); }
gameReady
gameReady(): void
通知 YouTube 遊戲已準備好供玩家互動。
遊戲在可互動時,MUST呼叫此 API。遊戲在載入畫面仍顯示時,不得呼叫此 API。否則遊戲會無法通過 YouTube 認證程序。
遊戲在可互動時,MUST呼叫此 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>
|
當取得語言成功時,此承諾會完成,如果失敗,則會拒絕使用 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 觸發音訊設定變更事件時觸發。
遊戲「必須」MUST使用這個 API 更新遊戲音訊狀態。
遊戲「必須」MUST使用這個 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)
|
用於取消設定通常未使用的回呼的函式。 |