ユーザ用ツール

サイト用ツール


Language:

サイドバー

バーチャルキャスト公式Wiki

メニュー

Steam版

デバイス

アセット

配信

その他

リリース情報

デベロッパー向け


開発環境

GLB

vci:script:module

module機能

module機能とは別のファイルに書かれたプログラムを呼び出して使用する事ができる機能です。

クラスのようにLuaスクリプトを機能ごとに切り出す事ができます。

  • module機能の使用には VCI v0.20 以降が必要です。
  • VirtualCastは1.7.0a以降で使用可能。

module (VCI Object)の設定方法

  1. sizeの値を「使用するmoduleの数 + 1」の値に変更します
  2. Nameにmodule名を入力します
  3. moduleのプログラムをテキストエリアに入力します

注意事項・仕様など

  • moduleからmoduleの呼び出しは可能です
    • (最初期のバージョンではできませんでしたが、現行バージョンであれば問題なく使えます)
  • moduleをバーチャルキャストでデバッグしながら作成する場合は…
    3のテキストエリアは空白のままアップロードした後に、
    EmbeddedScriptWorkspaceのフォルダから編集を行います
  • VCI v0.30 から、vci.assetsなどのvciテーブル以下の関数にmoduleからアクセスできるようになりました
  • Quaternion,Vector3などの型は使用可能です

moduleを呼び出して実行する

main.lua
-- math_custom に module の機能を格納する
local math_custom = require "math_custom"
 
local low = -5
local high = 1000
print(math_custom.clamp(low, 0, 300))
print(math_custom.clamp(high, 0, 300))
math_custom.lua
local module = {} -- この名前は何でも良い
 
function module.clamp(value, min, max)
    if value < min then
        value = min;
    elseif value > max then
        value = max;
    end
    return value;
end
 
return module

結果

0
300

moduleを呼び出して実行する(module 内の関数を local 指定する場合)

main.lua
-- module_1にmoduleの機能を格納する
local module_1 = require "module_1"
-- module_1の関数を呼び出す
print(module_1.GetName())
print(module_1.GetVector())
module_1.lua
-- 自分のファイル名を返す
local function GetName()
    return "module_1"
end
 
-- Vector3.__new(0,100,0)を返す
local function GetVector()
    return Vector3.__new(0,100,0)
end
 
-- VScodeのインテリセンス(入力予測)を使用するのに必要
return {
    GetName = GetName,
    GetVector = GetVector
}

結果

module_1
(0,100,0)

クラスのような使い方をする

main.lua
local module_2 = require "module_2"
local test1 = module_2.new(50,1)
local test2 = module_2.new(100,2)
test1:pp() -- コロンを使うことで引数のselfを省略出来る、test1.pp(test1)と同じ意味 
test2:pp()
module_2.lua
local module_2 = {} -- この名前は何でも良い
module_2.new = function(_x,_y) -- new functionで動的にテーブル生成して返す
    local obj = {}
    obj.x = _x
    obj.y = _y
 
    obj.pp = function(self) 
        print(string.format("(%d,%d)", self.x, self.y)) 
    end
    return obj 
end
 
return module_2

Enum のような使い方をする

main.lua
local fish = require "fish_id"
print(fish.chikuwa)
fish_id.lua
return {
    ebi = 1,
    chikuwa = 2,
    hanpen = 3
}

結果

2
vci/script/module.txt · 最終更新: 2022/12/12 20:40 by pastatto

ページ用ツール