Arma 3のスクリプトとかミッション作成とか

Arma3のミッション作成とスクリプティング

変数とスコープ その1

変数とスコープは曖昧なままにしておくと痛い目にあいます。
今回は「変数」と「スコープ」を簡単に説明します。

そもそも変数とスコープって何?

変数とは

変数とはデータを格納する記憶域と変数名という識別子を合わせ持ったものです。
言わば、名前の書かれた箱のようなものです。

myVariable = 1;

この例では「myVariable」という変数に「1」というデータが代入されています。
変数に値を代入することを「初期化」と言います。

また、変数には一つのデータしか入ることはできず、

myVariable = 100;
myVariable = "Hellow";

とすると、変数「myVariable」に最初に代入された「100」という数値データは「"Hellow"」という文字列データに上書きされ、100という数値データは消えてしまいます。

変数は繰り返しの呼び出しや上書きを繰り返す事ができます。
しかし、異なるデータや関係性のない名前付けをすると難解なコードになってしまいます。
ですので、変数名はどうのようなデータが入るのかを分かりやすくし、異なる用途のデータで上書きすることは避けましょう。

変数を削除するには

nilを代入することで変数を削除することができます。

myVarible = nil;

ミッション中などで再度利用しないグローバル変数などは削除したほうがベターです。

スコープとは

プログラミングで言うスコープとは、銃などに付ける照準器ではなく、可視範囲という意味で使われます。
変数は定義されたスコープ内でのみ参照することができます。

グローバルスコープ

グローバル変数は、定義されたコンピュータ内で利用できる変数です。
ミッションエディターでユニットに付けられた名前(Variable Name)もグローバル変数であり、再定義または変更することはできません。

ローカルスコープ

ローカル変数は、定義されたスクリプト内やFunction、制御機構などの小さな領域のみで利用できる変数です。
ローカル変数は変数名の頭にアンダースコア(_)を付ける必要があります(例 "_myVariable = 0;")。

パブリックスコープ

パブリック変数は、ネットワーク内に存在する全てのコンピュータで利用できる変数です。
グローバル変数を"publicVariable"などでネットワーク上の他のPCと共有することでパブリック変数となります。

(おまけ)タグ付けについて

グローバル変数を作成する場合は単純な名前ではなく、タグ付をして重複を回避しましょう。

myVariable = true;  // Not Good
KS_var_myVariable = true; // GOOD

myFunction = { someCode };  // Not Good
KS_fnc_myFunction = { someCode }; // GOOD