~~NOTOC~~
====== ExportMe(ローカルマシンの情報) ======
このページは過去の情報となります。\\
新しいスクリプトリファレンスは**[[https://developer.virtualcast.jp/vci-docs/api/|こちら]]**になります。
VCIを取り出したユーザーのローカル情報にアクセスする事ができます。
^ 名前 ^ 説明 ^ バージョン ^
| [[vci/script/reference/exportme#Time ]] | クライアントを起動してから現在までの時間 |
| [[vci/script/reference/exportme#UnscaledTime ]] | [[https://docs.unity3d.com/jp/current/ScriptReference/Time-timeScale.html|timeScale ]] の影響を受けないTime |
| [[vci/script/reference/exportme#Framecount]] | クライアントを起動してから現在までのフレーム数 |
| [[vci/script/reference/exportme#GetHeadMountedDisplayType ]] | 使用しているHMDのタイプを取得 | 1.9.2a 以降 |
| [[vci/script/reference/exportme#GetHeadMountedDisplayName ]] | 使用しているHMDの名前を取得 | 1.9.2a 以降 |
| [[vci/script/reference/exportme#GetHeadMountedDisplayIsMounted ]] | HMDを被っているかどうかの状態 | 2.0.0a 以降 |
| [[vci/script/reference/exportme#GetXXControllerName ]] | 使用しているControllerの名前を取得 | 2.2.7a 以降 |
| [[vci/script/reference/exportme#GetLanguageCode]]| 使用中の言語を取得 | 1.9.2a 以降 |
| [[vci/script/reference/exportme#GetSystemVersion]] | バーチャルキャストのバージョンを取得 | 1.9.2d 以降 |
| [[vci/script/reference/exportme#CompareSystemVersion]]| バージョンを比較 | 1.9.2d 以降 |
| [[vci/script/reference/exportme#GetDspTime ]] | 現在のオーディオシステム上の時刻を取得 | 2.3.9c 以降 |
| [[vci/script/reference/vciinput#getaxisinput |GetAxisInput ]] | VCIのキー操作の入力受付(※別ページ) | |
| [[vci/script/reference/vciinput#getbuttoninput | GetButtonInput ]]| VCIのキー操作の入力受付(※別ページ) | |
===== Time =====
**Time : TimeSpan**\\
バーチャルキャストの時刻を取得する
=== サンプル ===
function update()
print(vci.me.Time)
print("H : "..vci.me.Time.Hours)
print("M : "..vci.me.Time.Minutes)
print("S : "..vci.me.Time.Seconds)
end
=== 実行結果 ===
00:00:03.6820000
H : 0
M : 0
S : 3
''Time''の後に関数を追加すると細かい情報に分けてとる事ができます。\\
この時間はVCIスクリプトで定義された時間が表示されます。
===== UnscaledTime =====
**UnscaledTime : TimeSpan**\\
バーチャルキャストの時刻を取得する\\
クライアントを起動してから現在までの経過時間
=== サンプル ===
function updateAll()
print(vci.me.Time)
print(vci.me.UnscaledTime)
end
=== 実行結果 ===
02:29:51:1230000
02:30:00:2540000
....
==== Time と UnscaledTime の違い ====
''vci.me.Time'' ''vci.me.UnscaledTime'' はどちらも、ローカルマシン上での経過秒数を取得できます。\\
しかし、この2つは明確に違う値をとります。\\
なぜなら VR 空間内の時間の流れ方は、現実の時間の流れ方とは異なるからです。\\
使用用途によって、どちらの時間を使うのかを選択する必要があります。
''vci.me.Time'' は VR 空間内での経過時間を測るときに使用します。\\
たとえば ''transform'' に対して ''AddForce'' を3秒間加えたいといった物理挙動に関するときなどです。
''vci.me.UnscaledTime'' は現実の時間を基準にして経過時間を測るときに使用します。\\
たとえばタイマーなど、リアルの時間できっかり3分測りたいときなどです。\\
ただし、より正確に現在時刻を知りたい場合は ''os.date'' を使うのが良いでしょう。
===== os.date を利用する場合 =====
** os.date string **\\
''os.date''というLua自体の機能を使う事によってOSの現在時刻を取得する事ができます。\\
詳細は [[vci/script/luareference|Lua 5.2 リファレンスマニュアル]] - os.date () を参照してください。\\
=== サンプル1 ===
print(os.date("%Y-%m-%d %H:%M:%S"))
print(os.date("%m%d"))
print(os.date("%H"))
print(os.date("%M"))
print(os.date("%S"))
=== 実行結果1 ===
2019-02-26 17:14:25
0226
17
14
25
=== サンプル2 ===
月日を変数に保存しておけば、特定の日を条件にする事が可能です。\\
サンプルではクリスマスの日のみに実行されるサンプルです。\\
''os.date()''の戻り値はnumber型ではなくstring型なので、条件は文字列で指定するように気を付けましょう。
today = os.date("%m%d")
function onGrab()
-- today は string型
if today == "1225" then
print("メリークリスマス!")
end
end
==== string型からnumber型へ型変換 ====
サンプル
day = tonumber(os.date("%d"))
function onGrab()
if (day % 2) == 0 then
print("今日は偶数の日")
end
end
''tonumber()''を使う事で、string型からnumber型に変換する事ができます。\\
サンプルではdayを2で割った時のあまりが0である事を条件にする事で、偶数の日である事を判定しています。
===== FrameCount =====
**FrameCount : num**\\
クライアントを起動してから現在までのフレーム数
=== サンプル ===
function updateAll()
print(vci.me.FrameCount)
end
=== 実行結果 ===
10001
10002
10003
....
===== GetHeadMountedDisplayType =====
**GetHeadMountedDisplayType fun(): string**\\
HMDに関する情報を取得できます。
=== サンプル ===
print("HMD Type: "..vci.me.GetHeadMountedDisplayType())
=== 実行結果(VIVE を使用した場合) ===
HMD Type: Vive
** GetHeadMountedDisplayTypeで取得可能な値 **
* Vive
* Index (1.9.3a以降)
* Oculus
* Oculus Quest 2(2.0.0b以降)
* WindowsMR
* VIVECosmos
* Unknown: その他
===== GetHeadMountedDisplayName =====
**GetHeadMountedDisplayName fun(): string**\\
HMDに関する情報を取得できます。
処理内容はSteamVRの[[https://valvesoftware.github.io/steamvr_unity_plugin/api/Valve.VR.SteamVR.html|hmd_ModelNumberプロパティ]]から取得しています。\\
この値はSteamVRの仕様に準拠しますので、今後のアップデートで取得できる値が変わる可能性があります。
=== サンプル ===
print("HMD Name: "..vci.me.GetHeadMountedDisplayName())
=== 実行結果(VIVE を使用した場合) ===
HMD Name: Vive. MV
===== GetHeadMountedDisplayIsMounted =====
**GetHeadMountedDisplayIsMounted fun(): bool**\\
HMDを被っているかを所得できます。
===== GetXXControllerName =====
**GetLeftControllerName fun(): string**\\
**GetRightControllerName fun(): string**\\
Controllerに関する情報を取得できます。
Controllerの電源が入っていない等の理由によってControllerが認識していない場合は'' none ''が返されます。\\
また、別のControllerに切り替えた場合は返される値も変化します。
=== サンプル ===
print("LeftController Name: "..vci.me.GetLeftControllerName())
print("RightController Name: "..vci.me.GetRightControllerName())
=== 実行結果(VIVE を使用した場合) ===
LeftController Name: Vive. Controller MV
RightController Name: Vive. Controller MV
===== GetLanguageCode =====
**GetLanguageCode fun(): string**\\
使用中の言語を取得できます。
=== サンプル ===
print("Language Code: "..vci.me.GetLanguageCode())
** GetLanguageCodeで取得可能な値 **
* ja: 日本語
* en: 英語
* zh: 中国語(簡体)
* zhtw: 中国語(繁体)
===== GetSystemVersion =====
**GetSystemVersion fun(): string**\\
バーチャルキャストのバージョン情報をGetSystemVersionから取得できます。
=== サンプル ===
print(vci.me.GetSystemVersion()) -- 1.9.2d
===== CompareSystemVersion =====
**CompareSystemVersion fun(version: string)**\\
CompareSystemVersionは、引数で指定するバージョン文字列が、現在のバージョンと同じ場合は0、古い場合は正の値、新しい場合は負の値を返します。
=== サンプル ===
print(vci.me.GetSystemVersion()) -- 1.9.2d
local result = vci.me.CompareSystemVersion("1.9.2d")
print("Result: "..result) -- Result: 0
result = vci.me.CompareSystemVersion("1.9.2c")
print("Result: "..result) -- Result: 1
result = vci.me.CompareSystemVersion("1.9.3")
print("Result: "..result) -- Result: -1
===== GetDspTime =====
**GetDspTime fun(): number**\\
現在のオーディオシステム上の時刻を返します。
* 単位は「秒」です。
* ここで取得した時刻は、[[vci/script/reference/exportaudiosource#PlayScheduled]] で指定のタイミングで音声を再生する際に使用できます。
=== サンプル ===
print(vci.me.GetDspTime())