內容物件 - Amazon Sumerian

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

內容物件

注意

預覽版的新Sumerian 發動機 API現已推出。新的指令碼格式提供您更高層級的抽象,您可以使用這些抽象來撰寫指令碼,以利用視覺效果State Machine (狀態機器)行為以及您自己的自訂動作。這些動作可以動態設定,並由指令碼以強大的方式協調,超出使用視覺效果State Machine (狀態機器)元件。

您可以使用上下文對象ctx在指令碼存在時間內存放您的指令碼資料。上下文創建於setup(),並在上清除cleanup(),並傳遞到所有腳本函數中。它具有下列屬性:

Properties
  • entity(Entity) — 指令碼連接的實體。

  • entityData(Object) — 在實體上的所有指令碼之間分享的資料物件。

  • activeCameraEntity(Entity) — 目前使用中的相機實體。

  • domElement(HTMLCanvasElement() WebGL 帆布元素。

  • playTime(number) — 場景開始後經過的時間。

  • transitions(Object)-用於發出成功或失敗訊號的轉換函數執行指令碼上的動作狀態機器

  • viewportHeight(number) — 畫布的高度。

  • viewportWidth(number) — 畫布的寬度。

  • world(World)-world 物件。

  • worldData(Object) — 在 world 中的所有指令碼之間分享的資料物件。

上的部分屬性ctx在指令碼之間分享。entityData由實體上的所有指令碼共用且worldData由所有指令碼共用。所有實體最初皆為空內容,而且可用來存放任何類型的資料

例如,如果我們要定義稱為加速的屬性,可以提供三種層級:

// Only accessible to the script that defined the property ctx.acceleration=9.82; // Accessible to all scripts on the entity ctx.entityData.acceleration=9.82; // Accessible to all scripts ctx.worldData.acceleration=9.82;

內建內容屬性還包含一些便利功能。例如,world物件可讓您根據標籤來搜尋實體。您可以使用帶有 ctx.world.by.tag 的特定標籤來取得所有實體:

var entities = ctx.world.by.tag('myTag');