ユーザ用ツール

サイト用ツール


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.assetsなどのvciテーブル以下の関数はmoduleからアクセスできません
  • Quaternion,Vector3などの型は使用可能です

moduleを呼び出して実行する

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_1 = require "module_1"
local test1 = module_1.new(50,1)
local test2 = module_1.new(100,2)
test1:pp() -- コロンを使うことで引数のselfを省略出来る、test1.pp(test1)と同じ意味 
test2:pp()
module_1.lua
local module_1 = {} -- この名前は何でも良い
module_1.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_1
vci/script/module.txt · 最終更新: 2019/07/29 12:52 by h-eguchi

ページ用ツール