システム変数/ティラノ のバックアップ(No.14)


・参考用に記載している■変数名■は■も含めて任意の変数名に書き換えること。
・変数の書き方は
ゲーム変数→f.変数名
システム変数→sf.変数名
一時変数→tf.変数名

 

と記載。
頭に必ず「.f」か「.sf」か「.tf」を付けること。
「.tf」はまぁ無いと思われる。

変数名

ティラノスクリプトのページには
・変数名には半角英数と全角文字、_ (アンダーバー) を使うことができる
・変数名の最初に数値がくることはできない

 

という記載がある。
上記の通り、全角文字でも私はバグらなかったが、不安な場合は半角英数のみで変数を作った方が無難。
ティラノービルダーバグ多いみたいなんで・・・。

変数の初期値

ゲーム変数(f)、システム変数(sf)は初期値は「0」ではなく「undefined」というものが入ってる状態。

ゲーム変数(f)

変数を新規作成時に初期値を設定できる為、「0」と入力して作っておくのが無難。

システム変数(sf)

変数を新規作成する際、ゲーム変数(f)とは違って初期値を設定することができない。
その為最初(作りたてほやほや時)は数字ではなく、「undefined」が入った状態となっている。

変数設定(乱数)

バージョンによるくさいな・・・。
ver1.8.5→「2」~「3」の場合、「2」しか出てこない
ver1.8.7→「2」~「3」の場合、「2」「3」が出てくる。(上限、下限の数値も含まれる)

 

昔のは完全バグってて計算式を入れないとダメだったようですが、バージョンアップで修正されてるみたいです。
とはいえどこまで正しいかなんとも不安なので、この辺りのを見て自分で計算式入れた方がいいかも。
私はめんどくさがりなのと、今のところ問題なさそうなのでとりあえず現状維持で「変数設定」使う。

システム変数に0を代入する

システム変数は最初(ゲーム本編に入る前)にスクリプトでシステム変数の初期値を設定しておく必要がある。
でないと、ティラノビルダーのデバッグでは通常に動くが、ティラノライダーでのデバッグやエクスポートした際にシステム変数が稼働しない。

 

メニュー内の「スクリプト」>「ティラノスクリプト」を選び、下記を入力する事でsf変数の初期値を設定する事が可能。

 
 

[tb_start_tyrano_code]
[if exp="sf.■変数名1■==null"]
[eval exp="sf.■変数名1■=0"]
[endif]
[if exp="sf.■変数名2■==null"]
[eval exp="sf.■変数名2■=0"]
[endif]
[_tb_end_tyrano_code]

 
 

※■変数名■(■も含めて)をシステム変数名に変更する。

 

「システム変数が存在しない場合(undefined)は初期値を与えて宣言し、存在する場合(0とか1とか)は何もしない」
という設定をこれで施す。

 

上記初期設定を入れれば、通常はメニューから「変数設定」で数字なりなんなり代入すれば良。

 

title_screen1.jpg
title_screen2.jpg
↑xx_0というページを初期化ページにしている。

 

xx_0内容(初期化ページ)
変数0.jpg
※ティラノスクリプトの全容見えてないけど、

 

[tb_start_tyrano_code]
[if exp="sf.sf_test1==null"]
[eval exp="sf.sf_test1=0"]
[endif]
[if exp="sf.sf_test2==null"]
[eval exp="sf.sf_test2=0"]
[endif]

 

こうなっている。
下の空白の「ティラノスクリプト」は自動で出てくるので気にしなくていい。

 
 

参考:外部リンク

システム変数を初期値に戻す

0ではなく「undefined」に戻す場合は下記を
コンポーネント>スクリプト>ティラノスクリプトに入れれば良い。

 

[clearsysvar]

 

一つではなく、すべてのシステム変数を初期化する。
※くどいが「0」にするのではなく、初期化「undefined」にするものなので、デバッグ時にまっさらな状態でやりたいとかゲームをパッケージングする前とかそういう時しか今のところ使わないかな・・・。

全ての変数を初期化

[clearvar]

 

試してないけどシステム変数、ゲーム変数、一時変数すべて?

 

一つだけ初期化

こちらはスクリプト<T>に入力。
特定の変数だけって場合はdelete f.flag1;に続いて変数を書いていけばいいかと。
0ではなく「undefined」

 

[iscript]
delete ■変数名■;
[endscript]

 

undefinedのものに特定の数値を入れたい場合は

 

if(■変数名■ ==undefined){
■変数名■ = 0;
}

 
 

参考ページ:外部リンク