Listenを使いこなそう


1.何故Listenは重いと言われるのか?

 Listenは重いと良く言われます。
 重い原因は他の割込みイベントと違いイベントが発生しやすいという点にあります。

 頻繁にChatが行なわれている所でListenが動いていると会話がある分だけ
 Listenが動き何か処理を行なう
事になります。
 これは混んでいる所ではTimerイベントより激しい割込が発生します。
 イベント受信後の処理が複雑であれば当然重くなりますよね・・・。

2.様々なフィルター

 そのようなイベントが乱発する事を抑える為に以下のようなオプションがあります。

 @チャンネルの指定をする方法
  発言チャットを指定すれば、通常の会話を受け付けなくなります。
  つまり割込の発生を抑える事ができます。

  Listenのサンプルソースの「Channel Only」を使ってください。
  チャンネル1の発言のみ受信します。

  ○チャンネル発言の方法
   チャットで発言:「/1 Test」といった感じで
      「/[チャンネル番号]」をチャットの前につけます。
   スクリプトで発言:llSay等のでチャンネルを指定します
      「llSay([チャンネル番号],"Test");」といった感じです。

 A発言を受ける人を特定する方法
  全員のChatをすべて受ける必要は有りません。
  特定の人のチャットを受けるようにしましょう。

  Listenのサンプルソースの「User Only1」もしくは「User Only2」を使ってください

   「User Only1」:Key番号から(今回のはオーナの発言)だけを受信します。
   「User Only2」:名前から(私の名前になっていますが)だけを受信します。
    スクリプト発言させるオブジェクトからの受信をしたいのであれば
    keyもしくは名前をオブジェクトの物に変更します。

 B喋る内容を特定する方法
  まぁ特定の言葉だけで動くようにすれば。
  めったに割込みは発生しません。
  イベント受け付ける言葉を指定しましょう。

  ○Listenのサンプルソースの「"ON" Only」を使ってください
   「ON」とchatで発言したときのみ受信します。

 サンプルソース

    @まず、プリムをタッチすると、ListenがONになります。
    Aチャットで発言します。
    B発言した内容や、発言した人等の情報がテキストで表示されます。
                               →@へ戻る


おまけ

 まーこんだけフィルターつけたとしても、Listen割込のイベント受信を許可していると
 通常より少しリソースを食います。 通常スクリプトにプラス0.001msくらい(笑

 こんな数値どーでもいいだろって思うでしょうけど
 大量にあると、たとえイベント待ちで停止しているスクリプトであっても
 結構いい数値になるのでListen等、滅多に使わないであろう物は
 停止する事も考慮にいれたプログラムにしましょう。