リファレンス
アプリを作るための一覧です。コードから書き出したもので、説明の章(1〜8章)と食い違ったときは、こちらが正です。
Chapter 9
この章は、コードから書き出した一覧です。手で書いた説明(1〜8章)と食い違ったときは、こちらが正です(コードと食い違ったときは、コードが正)。
- 書き出した元:Ulexite TV
0.3.0 / Ulexite OS(ワールド)1 / App Services 4(1.1.0)・2026-10-23
- 元のコード:
Packages/vrc.ulexite.tv/Editor/UlexiteAppManifest.cs(マニフェスト)、Runtime/UlexiteAppServices.cs(窓口)、Editor/UlexiteDataAppBuilder.cs と Runtime/UlexiteDataApp.cs(データで書くアプリ)、Runtime/UlexiteAlerts.cs と Editor/UlexiteTestTvBuilder.cs(アイコンと色)、Editor/UlexiteAppBuilder.cs(UlexiteBuildKit)
- 仮の値は
[...] で囲みます。t: で始まる文字列は翻訳表のキーです
9.1 マニフェスト(ulexite-app.json)
アプリのパッケージの直下(package.json の隣)に置きます。version と作者は package.json が正です(VCC が読むのは package.json だけ)。テレビを作り直すときに読み、決まりに合わないところは Console にエラーで出ます(UlexiteAppManifest.Check)。
{
"manifestVersion": 1,
"id": "weather",
"name": { "ja": "天気", "en": "Weather" },
"version": "0.2.0",
"publisher": { "name": "Ulexite Technologies", "url": "https://example.com" },
"kind": "declarative",
"runtimes": { "world": { "os": 1, "appServices": 4, "screens": "app.screens.json" } },
"profiles": ["tv"],
"permissions": [],
"data": [],
"settings": [],
"budget": { "saveKB": 4, "imagesPerOpen": 1, "syncBytes": 256 },
"releaseNotes": { "ja": "最初のバージョン", "en": "First version" },
"icon": "Textures/icon.png",
"category": "info"
}
トップレベル
| 項目 | 型 | 必須 | 既定 | 決まり・例 |
manifestVersion | int | 必須 | — | 1 だけ |
id | string | 必須 | — | 英小文字・数字・- で32文字まで(^[a-z0-9][a-z0-9-]{0,31}$)。アプリの appId と同じにします(例:weather) |
name | object | 必須 | — | { "ja": "...", "en": "..." }。両方書きます(片方でも欠けるとエラー) |
version | string | 必須 | — | 1.2.3 の形。package.json の version と同じにします |
publisher | object | 必須 | — | { "name": "...", "url": "..." }。name は package.json の author.name(または Ulexite Technologies)と同じ |
kind | string | 必須 | — | native(U# で書く)か declarative(データで書く) |
runtimes.world | object | 必須 | — | 下の表。無いとワールドでは使えません |
profiles | string[] | 必須 | — | 出す端末。今は tv だけです。tv が無いとテレビに出ません |
permissions | string[] | 任意 | [] | ワールドでは空にします(入れるとエラー) |
preinstalled | bool | 任意 | false | 同梱(プリインストール)のアプリか。アプリ情報のラベルが「プリインストール」になります |
icon | string | 任意 | "" | パッケージからの相対パス(例:Textures/icon.png) |
category | string | 任意 | "" | アプリストアの分類(例:media・info・tools) |
runtimes.world
| 項目 | 型 | 必須 | 既定 | 決まり・例 |
os | int | 必須 | — | 必要な Ulexite OS(ワールド)の版。1 以上。今は 1 |
appServices | int | 任意 | 0 | 必要な App Services の版。今は 4 まで。足りないとアプリストアが「本体の更新が必要です」と出します |
entry | string | native は必須 | — | 画面を作る UlexiteAppBuilder のクラス名(例:UlexiteClockBuilder) |
screens | string | declarative は必須 | — | 画面の定義のファイル名(例:app.screens.json) |
data(読むファイル)
マニフェストの data は、URL を直接指定するデータ(時差の表など)に使います。データで書くアプリの画面のデータは、定義のファイル(9.3)の assets・data に書きます。
| 項目 | 型 | 必須 | 既定 | 決まり・例 |
id | string | url を書くとき必須 | — | 英小文字・数字・- で32文字まで。焼き込みの名前は「アプリID-データの id」 |
feed | string | 任意 | — | 共通の feed の名前を読むとき(古い形。新しいアプリは url を使います) |
url | string | 任意 | — | https の信頼済みドメインだけ:*.github.io・gist.githubusercontent.com・pastebin.com・*.vrcdn.cloud・*.disbridge.com |
every | string | 任意 | — | 読む間隔(例:10m・6h・24h) |
settings(アプリの設定項目)
アプリの画面から開く共通のパネルに出ます。最大 8 件。
| 項目 | 型 | 必須 | 既定 | 決まり・例 |
id | string | 必須 | — | 英小文字・数字・-・_ で32文字まで。重複不可 |
type | string | 必須 | — | choice(選択)・toggle(オン/オフ)・order(選んで並べる)・time(時刻) |
scope | string | 必須 | — | local(各自。PlayerData)・global(全員共通。共有データ)・creator(制作者が焼き込む。変更不可) |
choices | string | choice・order は必須 | — | 選択肢の表の名前(Packages/vrc.ulexite.tv/Data/choices/<名前>.json。例:jma-areas) |
default | string[] | 任意 | null | choice は1つ、order は max 以下、toggle は true/false。@region で OS の地域になる |
max | int | 任意 | 3 | order の上限。1〜10 |
step | int | 任意 | 5 | time の刻み(分)。1〜60 |
label | string | 必須 | — | 翻訳キー(例:Ulexite.Clock.Setting.Alarm) |
note | string | 任意 | — | 補足の翻訳キー |
翻訳キーの書き方:マニフェストに書く label・note はキーそのもの(t: を付けない)です。データで書くアプリの定義(9.3)では t: を付けます。
budget(予算)
| 項目 | 型 | 既定 | 上限 | 決まり |
saveKB | int | 4 | 16 | 自分の保存データ(PlayerData)の割り当て。Ulexite 全体で 60KB(うちシステムが 16KB) |
imagesPerOpen | int | 0 | — | 1回開く間に読む画像の枚数の目安(ワールド全体で5秒に1枚の枠を分け合います) |
syncBytes | int | 256 | 1024 | 共有データ(全員に同期する小さな値)の量。標準より小さく書いても標準(256)になります |
releaseNotes
{ "ja": "...", "en": "..." }。アプリ情報に出ます。
足すだけの欄(今は読みません)
| 項目 | 型 | 決まり |
pricing | object | 有料アプリ。type は free・paid・freemium。有料なら seller(販売元)と url(購入ページ)が必須。Ulexite はお金を扱いません |
license | object | 有料アプリの確かめ方。type は key(ライセンスキー)・account(販売元のアカウント)、verify は確かめる先 |
9.2 App Services(services)
アプリは launcher ではなく services(App Services) を通して Ulexite TV の仕組みを使います。UlexiteApp の services フィールドに、ランチャーが Start で入れます(アプリ側で探す必要はありません)。
- 戻り値のある窓口は、その場で値が返ります
- 結果を待つもの(データ・画像・確認・文字入力)は、アプリのイベントに届きます(9.2.14)
- アプリへの知らせは 1フレーム遅れて届きます(アプリで例外が出ても窓口とランチャーが止まらないように)
9.2.1 版と自分
| 窓口 | 型 | 説明 |
UlexiteAppServices.Version | const int = 4 | 窓口の版。マニフェストの runtimes.world.appServices と比べます |
servicesVersion | int | 実行中の窓口の版(Version と同じ) |
LocalName | string | 自分の表示名 |
IsCreator | bool | 自分がワールドの制作者か(設定ウィンドウの「制作者の表示名」と比べます) |
IsOperator | bool | 自分が操作する人か(リモコンを持っている人。誰も持っていなければ UI のオーナー) |
IsJapanese | bool | 表示が日本語か |
JstNow | DateTime | 日本時間の現在時刻 |
TerminalNumber | int | 端末の番号(1から。2台目は別の保存・別の feed になります) |
9.2.2 翻訳と操作音
| 窓口 | 戻り値 | 説明 |
L(string key) | string | 翻訳表から引く(無ければキーをそのまま返す) |
_PlayCursor() / _PlayDecide() / _PlayNotify() / _PlayError() | — | 操作音(テレビの位置から全員に聞こえます) |
_PlaySound(AudioClip clip) | — | 好きな音をテレビの位置から鳴らす |
9.2.3 ループ再生
| 窓口 | 戻り値 | 説明 |
_PlayLoopLocal(UlexiteApp app, AudioClip clip, float seconds) | — | 自分の手元だけのループ(時計のアラーム)。seconds で自動停止(0 は止めるまで)。アプリを閉じると止まります |
_StopLoopLocal() | — | ローカルのループを止める |
_PlayLoop(UlexiteApp app, AudioClip clip) | bool | 全員向けのループ。操作する人だけが使えます(false なら断られています) |
_StopLoop() | — | 全員向けのループを止める |
9.2.4 テーマ
| 窓口 | 戻り値 | 説明 |
_Theme(string name) | Color | 色の名前(9.4)で引く。知らない名前は白 |
9.2.5 通知とトースト
| 窓口 | 戻り値 | 説明 |
_Notify(string appId, string id, int kind, int icon, string title, string body, float progress, int priority, bool canDismiss) | — | 通知ウィンドウに出す。同じ id は書き換え。kind=UlexiteNotifications.KindSimple・KindProgress・KindAlert、icon=9.5、progress=0〜1(使わないなら負)、priority は 0〜89。通知を選ぶと appId のアプリが開きます |
_NotifyButton(string appId, string id, int slot, string label, UdonSharpBehaviour target, string eventName) | — | 通知にボタンを付ける(slot は 0〜1)。押した人の手元で target の eventName が呼ばれます |
_RemoveNotify(string appId, string id) | — | 通知を消す |
_Toast(string title, string body, int icon, bool warn) | — | 右上のお知らせ(ローカル)。同じ見出しは通知ウィンドウに1件だけ残ります |
9.2.6 メディア(再生)
| 窓口 | 戻り値 | 説明 |
PlaybackAvailable | bool | 再生できる状態か(再生アダプターが生きているか) |
MediaState | int | 0 停止・1 読み込み中・2 エラー・3 準備完了・4 再生中・5 一時停止 |
MediaTime / MediaDuration | float | 秒。ライブでは MediaDuration が無限 |
MediaIsLive | bool | ライブ配信か |
MediaTitle | string | 再生中のタイトル |
_Play(VRCUrl url, string title) | — | 今すぐ再生(再生中なら割り込む) |
_Queue(VRCUrl url, string title) | — | キューの末尾に足す |
_TogglePlay() / _Stop() / _Next() / _Previous() | — | 再生・一時停止/停止/次/前 |
_Seek(float seconds) | — | 秒へ移動(ライブでは効きません) |
注意:VRCUrl は焼き込んだものだけ渡せます(Udon は文字列から URL を作れません)。URL はマニフェストか定義の assets に書いてください。
9.2.7 画像
| 窓口 | 戻り値 | 説明 |
_RequestImage(VRCUrl url, UdonSharpBehaviour receiver, bool reload) | — | 順番待ちで読む(ワールド全体で5秒に1枚を Ulexite TV がまとめます)。届いたら receiver の _OnImageLoaded/_OnImageError |
_GetImage(VRCUrl url) | Texture2D | 置き場にあれば返す(無ければ null。一度頼んだら二度と頼まない作りにしない:無ければ _RequestImage) |
_ReleaseImage(VRCUrl url) | — | 使い終わった大きい画像(地図に重ねる画像など)を捨てる |
9.2.8 データ(feed)
アプリ ID の feed(マニフェスト/定義の data で id を書いたもの)
| 窓口 | 戻り値 | 説明 |
_RegisterFeed(string appId, int mode, float interval) | bool | 取り方を登録(_Init で)。mode=UlexiteFeedLoader.ModeOnOpen・ModeBackground・ModeAlways、interval は秒 |
_ReloadFeed(string appId) | — | 今すぐ読み直す |
_FeedKey(string appId) | string | feed のキー(<端末の番号>/<アプリID>) |
_FeedText(string appId) | string | 届いた文字列(無ければ null) |
_FeedJson(string appId) | DataDictionary | JSON として読んだもの(読めなければ null) |
_FeedStatus(string appId) | int | StatusNone(0)・StatusLoading(1)・StatusFresh(2)・StatusStale(3)・StatusFailed(4) |
_FeedLoadedAt(string appId) | int | 読めた時刻(サーバー時刻のミリ秒) |
_CommonFeed() | DataDictionary | 共通の feed(地震・津波・警報・注意報・お知らせ・最新バージョン) |
URL を直接指定するデータ(マニフェストの data.url。時差の表など。名前は「アプリID-データの id」。App Services 3 以降=Ulexite TV 0.4.0 から)
| 窓口 | 戻り値 |
_RegisterDataFeed(string appId, string dataId, int mode, float interval) | bool |
_ReloadDataFeed(string appId, string dataId) | — |
_DataFeedText(string appId, string dataId) | string |
_DataFeedJson(string appId, string dataId) | DataDictionary |
_DataFeedStatus(string appId, string dataId) | int |
_DataFeedLoadedAt(string appId, string dataId) | int |
9.2.9 保存(PlayerData)
| 窓口 | 戻り値 | 説明 |
StorageReady | bool | 保存が読めるようになったか。OnPlayerRestored の前は読み書きしない(書いても false) |
_SaveString(string appId, string key, string value) | bool | 自分の保存に書く(キーは自動で ulexite_t<端末>_<アプリID>_<key>) |
_SaveInt(string appId, string key, int value) | bool | 同上(整数) |
_LoadString(string appId, string key, string fallback) | string | 読む(無ければ fallback) |
_LoadInt(string appId, string key, int fallback) | int | 同上(整数) |
_LoadPlayerString(VRCPlayerApi player, UlexiteApp app, string key, string fallback) | string | ほかの人の保存を読む(書けるのは本人だけ) |
_LoadPlayerInt(VRCPlayerApi player, UlexiteApp app, string key, int fallback) | int | 同上 |
_LoadPlayerStringId(VRCPlayerApi player, string appId, string key, string fallback) | string | appId を文字列で渡す版 |
注意:他人の PlayerData は読めますが、書けるのは本人だけです。1つのキーが変わると全員の PlayerData が送られるので、キーは少数にまとめ、よく変わるものは共有データへ。
9.2.10 共有データ(全員に同期・インスタンスの間だけ)
| 窓口 | 戻り値 | 説明 |
_SharedSetInt / _SharedSetFloat / _SharedSetBool / _SharedSetString (string appId, string key, T value) | bool | 書く。書けるのは操作する人(ほかの人はオーナーへの依頼。0.5秒に1回まで) |
_SharedInt / _SharedFloat / _SharedBool / _SharedString (string appId, string key, T fallback) | T | 読む(無ければ fallback) |
注意:文字は 128 字まで(長いものは切られます)。< は全角になります(外部の文字でリッチテキストを使わせないため)。保存はされません(インスタンスの間だけ)。
9.2.11 確認ダイアログ
| 窓口 | 戻り値 | 説明 |
_Confirm(UlexiteApp app, string eventName, string title, string body, string yes, string no, bool danger) | bool | 開けたら true。操作する人でなければ開かずに false。答えは答えた人の手元で app の eventName に届き、DialogAccepted を読みます |
DialogAccepted | bool | 答え(イベントの中で読む)。「いいえ」・閉じた・操作する人がいなくなった・ほかのアプリに移った、は false |
9.2.12 文字入力
| 窓口 | 戻り値 | 説明 |
_RequestText(UlexiteApp app, string eventName, int kind, string title, string example, string hint, int maxLength) | bool | 開けたら true。kind=UlexiteTextInput.KindText・KindNumber、maxLength は 64 まで |
TextAccepted / TextResult | bool / string | 答え(イベントの中で読む) |
注意:URL はここでは受け付けません(Udon は文字から URL を作れないため)。URL は VRCUrlInputField を自分で置いてください。
9.2.13 地域・設定・そのほか
| 窓口 | 戻り値 | 説明 |
_Region() | string | OS の地域(jma-areas の6桁コード)。テレビの全員で同じ・無ければ 130000(東京都) |
_SetRegion(string code) | bool | 地域を変える(6桁の数字だけ・操作する人だけ) |
_SettingString(UlexiteApp app, string id, string fallback) / _SettingInt / _SettingBool | string / int / bool | 設定の値(宣言が無ければ fallback)。@region は地域に置き換わります |
_SettingOrderCount(UlexiteApp app, string id) / _SettingOrderKey(UlexiteApp app, string id, int index) | int / string | order の件数・i 番目(空の項目は数えません) |
_SetSettingInt(UlexiteApp app, string id, int value) / _SetSettingString(UlexiteApp app, string id, string value) | bool | 設定を書く(操作する人だけ。creator は書けません) |
_ClearAppData(UlexiteApp app) | — | アプリの保存を空にする(アプリ固有のキーは _OnServicesClearData で消す) |
_OpenSettings(UlexiteApp app) | bool | アプリの設定パネルを開く |
_ProvideScreensaver(UlexiteApp app, VRCUrl image, string caption) | bool | スクリーンセーバーに出す画像とひとことを登録(「裏でも取る」アプリだけ) |
_LoadingBegin(UlexiteApp app, bool hasData) / _LoadingEnd(UlexiteApp app) | — | 読み込みの表示(hasData が true なら右上に小さく「更新中…」、false なら中央に「読み込み中…」) |
_OpenApp(string appId, string action, string arg) | bool | 別のアプリを開く(action・arg は開いたアプリの _OnServicesAction に届く。呼んだ人の手元だけ) |
9.2.14 アプリに届くイベント
必要なものだけ書けばよいです(書かなければ何も起きません)。
| イベント | いつ |
_Init() | 作られたとき(1回)。feed の登録はここで |
_OnOpen() / _OnClose() | 開いた/閉じた |
_OnRender() | フォーカスやタブが変わった |
_OnServicesFeed() | 自分のデータが届いた/状態が変わった |
_OnServicesCommonFeed() | 共通の feed が届いた |
_OnServicesStorageReady() | 保存データが読めるようになった |
_OnServicesStorageChanged() | 保存データが変わった(ほかのテレビで書いたときも) |
_OnServicesSharedChanged() | 共有データが変わった |
_OnServicesSettingsChanged() | 設定が変わった |
_OnServicesMinute() / _OnServicesDayChanged() | 毎分/日本時間で日付が変わった |
_OnServicesRegionChanged() | OS の地域が変わった |
_OnServicesAction() | ほかのアプリから動作を指定して開かれた(ActionName・ActionArg) |
_OnServicesLoadRetry() | 読み込みに失敗して「再試行」が押された |
_OnImageLoaded() / _OnImageError() | _RequestImage の答え |
_OnServicesClearData() | _ClearAppData でアプリ固有のキーを消す |
9.2.15 呼ぶ順と気をつけること
_Init で feed を登録(_RegisterFeed/_RegisterDataFeed)。開いたときに読み直すのは _OnOpen で _ReloadFeed
- 保存は
StorageReady が true になってから。_Save* が false を返すときは、まだ読めていないか、ID の形が違います
- 確認と文字入力は「操作する人」だけ。
false が返ったら開けていません(操作していない人から呼ばれた)
- 答えはイベントで受ける。
_Confirm の戻り値は「開けたか」だけで、はい/いいえは DialogAccepted
- 通知の
id はアプリの中で一意に。同じ id で書き換えます。消すときは _RemoveNotify
_OpenApp の動作と引数は同期しません(開くことだけ全員にそろう)。開いたアプリが結果を自分で同期してください
- Udon の制約:
List は使えません(配列か DataList)。例外が出た UdonBehaviour はそのセッション止まるので、重い処理は分けます(3章)
9.3 データで書くアプリ(定義のファイル)
runtimes.world.screens に書いたファイル(app.screens.json)の中身です。書き方は 4章。
9.3.1 トップレベル
| 項目 | 型 | 必須 | 説明 |
format | int | 必須 | 1 |
lang | string | 任意 | 翻訳表のファイル名(例:lang.json) |
settings | array | 任意 | アプリの設定項目(9.1 の settings と同じ形。label は t: 付き) |
assets | object | 任意 | { "files": { "<名前>": { "url": "...", "each": "<選択肢の表>" } }, "images": { ... } }。URL を焼き込みます |
data | array | 任意 | { "id": "...", "file": "...", "every": "10m", "when": "screen:map", "background": true } |
maps | object | 任意 | 値 → 文字・色・アイコンの対応表 |
tile | object | 任意 | ホームのタイル({ "icon": "...", "text": "..." }) |
screensaver | object | 任意 | スクリーンセーバーに出すもの |
screen | object | 必須 | 画面(下) |
9.3.2 画面の型
| 型 | 状態 | 中の項目 |
tabs | 使える | tabs[](id・label・width・screen) |
dashboard | 使える | cards[](size=wide・when・style・parts[]) |
list-detail | 使える | list(items・row・columns・title・max・select・footer)・detail・banner・note |
map | 使える | base(world・japan)・layers[](image・frames・points・marker) |
grid | まだ | タイルの格子(ライブカメラ用) |
9.3.3 部品
cards[].parts[] に書きます。
| 部品 | 状態 | 主な項目 |
text | 使える | text・style(caption・title・strong・mono)・lines・when |
value | 使える | value・label・unit・icon(大きな数値の横にアイコン)・when |
note | 使える | note(出典・注意書き) |
icon | 使える | icon(名前は 9.5)・size(hero)・when |
badge | 使える | badge(text・color)・size(hero)・when |
badges | 使える | badges(値の道筋)・badge(1件の形)・max(既定 6) |
strip | 使える | strip(値の道筋)・heading・card(parts[])・max |
list | 使える | list(値の道筋)・max・row(parts[]) |
image | まだ | assets の画像(写真・QR) |
chart | まだ | 折れ線・棒(点は12まで) |
button | まだ | 動作を呼ぶボタン |
custom | まだ | U# で書いた部品をはめる |
9.3.4 値のはめ込みと整形
{{ 道筋 }} で値をはめ、| でつないで整形します。
| 関数 | 例 | 結果 |
num:<桁> | {{ 18.44 | num:1 }} | 18.4 |
unit:<単位> | {{ 18 | unit:℃ }} | 18℃ |
time / time:dayAware | {{ "2026-10-18T21:20:00+09:00" | time }} | 21:20 |
date / date:weekday / date:short | | 10月19日/月/10/19 |
ago | | 3分前 |
map:<表> | {{ "100" | map:wxIcon }} | 表の値 |
choice:<選択肢の表> | {{ "130000" | choice:jma-areas }} | 東京都 |
scale:<名前> | {{ 31 | scale:temp }} | temp は色の名前(下記)。それ以外は muted |
localized:<欄> | {{ area.current.wxText | localized:wxTextEn }} | 英語の欄(欄に . が無ければ値と同じ道筋の欄) |
t:<キー> | {{ "weather.now" | t }} | 翻訳 |
fallback:<値> | {{ x.wx.code | fallback:t:metar.noWx }} | 値が無いときに使う |
scale:temp は 0 未満が #7fb0e8、10 未満が #a8c7fa、20 未満が #e3e3e6、30 未満が #f2d16b、それ以上が #ff8a65 です。
9.4 テーマの色
アプリは色を直接書かず、名前で引きます(native は services._Theme("surface")、データで書くアプリは maps の色の名前)。値はテレビの既定のテーマです。
| 名前 | 既定の色 | 使いどころ |
background | #101214 | 画面の地 |
surface | #24272b | カード・ボタンの地 |
surface2 | #1b1e22 | 一段暗い地(帯・入れ子) |
dialog | #2a2e34 | ダイアログの地 |
dialogItem | #33373d | ダイアログの項目 |
text1 | #e3e3e6 | 本文 |
text2 | #c4c6cc | 一段弱い文字 |
text3 | #a0a4ab | 補足 |
text4 | #8c9097 | いちばん弱い文字(出典など) |
divider | #3a3e44 | 区切り線 |
accent | #a8c7fa | 強調(リンク・選択) |
focus | #ffffff | フォーカスの枠 |
live | #ff6b6b | LIVE・録画の印 |
track | #4a4e55 | スライダーの溝 |
札(badge)の色
札の色は意味の名前で書きます(maps や badge.color)。文字の色と、level5 の囲み線は OS が決めます。
| 名前 | 地の色 | 文字 | 用途 |
danger | #ff6b6b | 暗い | 危険 |
warning | #f7a35c | 暗い | 注意 |
caution | #f2d16b | 暗い | 注意報 |
info | #a8c7fa | 暗い | 情報 |
muted | #8c9097 | 暗い | 弱い |
level5 | #0b0b0c | 白+囲み線 | 特別警報 |
level4 | #7a3fc2 | 白 | 危険警報 |
level3 | #d8383a | 白 | 警報 |
level2 | #f2c230 | 暗い | 注意報 |
int1〜int7 | int1 #4a5260・int2 #2f6fd0・int3 #24865a・int4 #f2c230・int5l #f59a3c・int5u #bf4e1c・int6l #d8383a・int6u #9e1f2c・int7 #7a3fc2 | 震度ごとに白/暗い | 震度(int5l・int5u・int6l・int6u は「5弱」など) |
vfr・mvfr・ifr・lifr | #5fd18b・#6fa8ff・#ff7a7a・#d68cff | 暗い | METAR の飛行区分 |
防災のレベルと震度、飛行区分はテーマで変わりません(気象庁の色に合わせています)。
9.5 アイコン
通知・トーストのアイコン(_Notify・_Toast の icon)
UlexiteAlerts の定数です。
| 値 | 定数 | 絵 |
0 | UlexiteAlerts.IconInfo | info |
1 | UlexiteAlerts.IconWarn | warn |
2 | UlexiteAlerts.IconRetry | retry |
3 | UlexiteAlerts.IconAdd | add |
4 | UlexiteAlerts.IconSleep | sleep |
5 | UlexiteAlerts.IconClock | clock |
6 | UlexiteAlerts.IconAlarm | alarm |
7 | UlexiteAlerts.IconCity | city |
部品のアイコン(icon 部品・value の icon・K.Icon の名前)
add・alarm・alert・back・city・clock・cloud・dot・epicenter・gear・home・info・info-circle・link・media・moon-0〜moon-7・next・pause・play・power・previous・rain・recall・remote・retry・services・sleep・snow・spinner・stop・store・sun・tv・warn
9.6 画面のコード例
実際に動いているアプリから読むのがいちばん確かです。
| 見たいこと | ファイル |
| U# のアプリの全体(時計) | Packages/vrc.ulexite.app.clock/Runtime/UlexiteClockApp.cs |
画面の組み立て(UlexiteAppBuilder・K.*) | Packages/vrc.ulexite.app.clock/Editor/UlexiteClockBuilder.cs |
| マニフェストと翻訳表 | Packages/vrc.ulexite.app.clock/ulexite-app.json・Localization/ulexite-clock-lang.json |
| ホームのタイル(ライブタイル) | Packages/vrc.ulexite.app.clock/tile.json・UlexiteClockApp.GetTileWidget |
| データで書くアプリの見本 | 天気アプリ(app.screens.json・lang.json・*.sample.json) |
| 開発キットの「新しいアプリ」のひな形 | Packages/vrc.ulexite.devkit/Editor/UlexiteNewApp.cs |
時計アプリで分かること:_Init での feed 登録、_SettingString/_SettingOrderKey での設定の読み方、_SaveString での保存、_PlayLoopLocal でのアラーム、GetTileWidget でのライブタイル、UlexiteBuildKit(K.CreateApp・K.Rect・K.Tmp・K.Focus)での画面の組み立て。
9.7 版
| もの | 値 |
| Ulexite TV | 0.3.0(Packages/vrc.ulexite.tv/package.json) |
| Ulexite OS(ワールド) | 1(UlexiteSystem.OsVersion) |
| App Services | 4(UlexiteAppServices.Version)・1.1.0(Release) |
- この章はコードから書き出したものです。版が変わったら、この章も更新します。
- 説明の章(1〜8)と食い違ったときは、この章(=コード)が正です。
目次に戻る