ステート

ステート

まずはプリムを作って「新しいスクリプト」で出来たスクリプトの内容を見て欲しい

default{
    state_entry(){
        llSay(0, "Hello, Avatar!");
    }
    touch_start(integer total_number){
        llSay(0, "Touched.");
    }
}
この中の何にも包まれてないdefaultっていうのがステートのことだ
defaultに包まれてるstate_entryとtouch_startがイベントだってのはもうわかるな

defaultってのはLSLを動かした時に始めに実行されるステートのこと

そもそもステートって何?

いい感じの説明が思い浮かばなかったからイメージでつかんでくれ

ファミコンの1コンと2コンがあるよな
1コンを持っていれば1コンのAボタンとか十時ボタンを押せるけど
2コンのボタンは操作できない

2コン側に移動すれば2コンのボタンは操作できるけど1コンのボタンは操作できない

これと似たようなもんで

ステート1にいるとステート1の中のイベントは動作するけどステート2のイベントは動作しない

ステート2へ移動するとステート2の中のイベントは動作するけど今度はステート1のイベントが動作しなくなる

まあそういうことだ

図で説明するとこんな感じ


ステートを新しく作るには
state newstate{

}
と書けばおk
ユーザが作るステートには
ステート名の前にstate って書いてやる必要がある

この中にdefaultと同じようにイベントを書いていってやればおk
state newstate{
    state_entry(){
        llOwnerSay("in newstate");
    }
}

また、defaltからこのステートに移動したい場合は
defaltのイベントのどこかに次の命令を追加してやる必要がある
state newstate;

ためしにタッチしたらステートを移動するようにしてみよう
default{
    state_entry(){
        llSay(0, "Hello, Avatar!");
    }
    touch_start(integer total_number){
        state newstate;
    }
}
state newstate{
    state_entry(){
        llOwnerSay("in newstate");
    }
}
こんな感じ
このスクリプトの場合は、ステート移動した後にタッチしても何もおこらないぞ

|新しいページ|検索|ページ一覧|RSS|@ウィキご利用ガイド | 管理者にお問合せ
|ログイン|
添付ファイル

メニュー


はじめに


つぎに


NEET SIM


物作りとか

スカルプ
LSL


+  その他

リンク




更新履歴




5 人が閲覧中



更新履歴