Script Document

コマンド

記述ルール

演算式、及び、関数は原則1行に1つづつ記述してください
1行に複数の演算式(関数)を記述する場合はセミコロン(;)で区切ってください
演算式(関数)の途中で改行する場合は改行箇所に半角円記号(¥)を入れてください
関数の( )は省略する事も出来ます
デフォルト引数を持つ関数は引数の記述を省略可能です

  1. : var = Func 1, 2, 3 // 関数の()は省略可能
  2. : var = Func( 1, Sum( 1, 2 ), 3) // 括弧を使うと引数に関数を設定できる
  3. : var = Func() // デフォルト引数を持つ関数は引数を省略できる
  4. : var = Func( , , 3 ) // 一部だけ引数を省略する場合はコンマのみを書く
  5. : x = 10; y = 20; z = 30 // 複数の命令を1行に記述する場合はセミコロンで区切る
  6. : long = 1 + 2 + 3 + 4 + \ // 命令の途中で改行する際は円記号を使う
  7. : 5 + 6 + 7 + 8 + 9

変数

スクリプト内では自由に変数を定義して使用することが出来ます (変数宣言は不要)
変数の型は自動的に設定されます
変数の有効期間はスクリプトが終了するまでの間のみです
スクリプトが閉じられるとスクリプト内で使用した変数は全てクリアされる事に注意してください

変数型

変数型は自動で設定されますがシステム内部では真偽値と数値、文字列が区別して扱われます
変数型によって使用できない演算子があることに注意してください

説明
真偽値true, falsetrue 又は false を代入した変数は真偽値型となります。比較演算の結果も真偽値型となります
数値123, 14.5, 0xAB数値はシステム内部では全て double 型で保持します。16進数を使うときは先頭に 0x を付けてください
文字列"abc", Nullダブルクォートで囲むと文字列型となります。Nullも文字列として扱います
UndefinedUndefined存在しない変数を使用した場合は Undefined という特殊な状態になります。変数が存在するかを確認するときにのみ使用します
Void コマンドとして使用することはありません。システム内部で引数未設定の状態を扱うときに使用します

変数型

演算式に複数の変数型が混在している場合は以下の優先順位で変数型の変換が行われます

文字列 > 実数 > 整数 > 真偽値
例 ) 整数型+時数型 の解は整数型。 整数型 + 文字列型 の解は文字列型になる

文字列

文字列は加算演算子(+)で繋ぐことで結合することができます
文字列中の円記号(¥)はエスケープシーケンスとして扱われます

  1. : a = "abc"
  2. : b = "def"
  3. : c = 123
  4. : var = a + b + c // var の値は"abcdef123"になる

<エスケープシーケンス>
\tタブ
\n改行文字
\\円記号
\"ダブルクォート

演算子

スクリプト内では以下の演算子が使用できます

演算子優先順真偽値数値文字列説明
+0××プラス符号
- ××マイナス符号
! ××真偽値反転
~ ××ビット反転
^1××累乗
*2××乗算
/ ××除算
% ××剰余残 (余り算)
+3×加算
- ××減算
<<4××左ビットシフト
>> ××右算術ビットシフト
>>> ××右論理ビットシフト
<5××未満
<= ××以下
>= ××以上
> ××超過
==6等価
!= 不等価
&7×ビット論理積
|8×ビット論理和
@9×ビットの排他的論理和
&&10××論理積
||11××論理和
=12代入
+= 加算代入
-= 減算代入
*= 積算代入
/= 除算代入
%= 余算代入
&= 論理積代入
|= 論理和代入

条件分岐

条件分岐は以下の構文で記述します
条件式を囲む丸括弧()は省略可能です

  1. : if (条件式1)
  2. : // 条件式1が真のときの処理
  3. : elif (条件式2)
  4. : // 条件式1が偽で、条件式2が真のときの処理
  5. : else
  6. : // 条件式1、2共に偽のときの処理
  7. : endif

条件分岐はネストさせることができます

  1. : if 条件式1
  2. : if 条件式2
  3. : if 条件式3
  4. : // ~ 処理 ~
  5. : endif
  6. : endif
  7. : endif

1行に纏めて書くこともできます

  1. : if 条件式 ~真のときの処理~ else ~偽のときの処理~ endif

スクリプトの終了と Exit 関数

スクリプトはファイルの終端に到達すると自動的に終了します
Exit 関数を使用するとその場でスクリプトを終了させます
Exit 関数の引数(戻り値)は省略する事が出来きます
但し、スクリプトの呼び出し元の仕様により戻り値の指定が必須の場合もあります

  1. : Exit // この行でスクリプトが終了する
  2.  
  3. : Exit 123 // 戻り値を指定するとスクリプトの呼び出し元に値を返すことが出来る
  4. : Exit( 123 ) // 丸括弧付きでも可

ジャンプ関数

Jump 関数を使うと任意の場所に実行位置をジャンプさせる事ができます

  1. : Jump( "scripts/sample*LabelA" ) // scripts/sample スクリプトの LabelA にジャンプする
  2.  
  3. : Jump // 引数を省略した場合は現在のスクリプトファイルの先頭に移動する

ジャンプ先の指定方法

ジャンプ先の指定は [<アセットバンドル名>/<スクリプト名>] [*<ラベル>] の形の文字列として記述します

ラベル例説明
scripts/samplescripts/sample.lcm スクリプトの先頭にジャンプする
*LablelA現在実行中のスクリプトファイル内のラベル LabelA にジャンプする
scripts/sample*LabelAscripts/sample.lcm スクリプト内のラベル LabelA にジャンプする

サブルーチン

Call 関数と Return 関数を使うとサブルーチンを作る事が出来ます
Call 関数は Jump 関数と違い処理が終わると呼び出し位置に実行位置が戻ります
Return 関数は戻り値を設定でき、Call 関数の戻り値として取得することができます
サブルーチンのネストは8回まで可能です (必要に応じて変更可)

  1. // サブルーチンの呼び出し。12行目にジャンプし、サブルーチン処理後に戻ってくる
  2. : Call( "scripts/SubScript*Subroutine" )
  3.  
  4. // 戻り値を使って関数に似たものを作ることもできる
  5. // 以下の式では sum = 10 + 20 となる
  6. : sum = Call( "scripts/SubScript*GetX" ) + Call( "scripts/SubScript*GetY" )
  7. : Return
  8.  
  9. //----------------------
  10. // サブルーチン先
  11. //----------------------
  12. *Subroutine
  13. サブルーチンが呼ばれたよ
  14.  
  15. : Return // 呼び出し元に戻る
  16.  
  17. //----------------------
  18. *GetX
  19. : Return( 10 )
  20.  
  21. //----------------------
  22. *GetY
  23. : Return( 20 )
TOP