LlSetText/ja

From Second Life Wiki
Jump to navigation Jump to search

要約

関数: llSetText( string text, vector color, float alpha );

color と透過率 (alpha で指定します) を指定して、プリムの上に text を表示します。

• string text 表示する フローティングテキスト
• vector color RGB の <R, G, B> (<0.0, 0.0, 0.0> = 黒, <1.0, 1.0, 1.0> = 白)
• float alpha 0.0 (透過) ~ 1.0 (表示) (0.0 <= alpha <= 1.0)

警告

  • ストレージ媒体として フローティングテキスト の機能が使えると思わないでください。これは不完全ですし、安全なものでもありません。
    • フローティングテキストはサーバの更新時に変更になったことが過去にあり、その際に既に設定されている内容は消去されていました。将来も変更が発生する可能性があります。
    • 「不可視」[1] のフローティングテキストもクライアントに送信されます。
      • 不可視にしているテキストを表示することのできるクライアントを持っている人が見れてしまう可能性があります。
      • テキストが含まれている通信パケットが盗聴され、テキストが読まれる可能性があります。
  • llSetText を(リセット、対話式またはスクリプトのステートで) 同一プリムで 2 回以上呼び出すと、最後の呼び出しが以前のものより優先されます。
  • text は 254 バイト制限 されます。文字列がそれより長い場合、文字が泣き別れしようがお構いなしに、254 バイトにカットされます。
  • 非常に長い途切れのないテキストは、自動的に (上下) 2 行に分割されることがあります。
  • フローティングテキストは壁やその他のオブジェクトからすり抜けて見えることがあります。モールやアパートの隣の人に配慮してください。
    • 見える範囲はプリムの大きさに比例します。
  • スクリプトを削除しても非アクティブ化しても、プリムのフローティングテキストは削除されません。
    • フローティングテキストはプリムのプロパティで、スクリプトが存在しつづけなければならないものではありません。
  • フローティングテキストを削除するには、以下を使用してください。
llSetText("", <1.0, 1.0, 1.0>, 1.0);
  • Shift コピーはフローティングテキストのプリムプロパティを維持しません。llSetText() がコピーされたときに発生しなければ、コピーにはフローティングテキストはつきません。
  • 空行はテキスト文字列の終端から削除されます。このため、空行を作りたいときには最後の行に何か文字 (空白など) を入れてください。
  • 複数の空行となる改行は 1 つの改行に変換されます。このため、スキップしたい全ての行に空白文字を追加してください。
llSetText("Monkeys\n\n\n\n\n", <1.0, 1.0, 1.0>, 1.0);//悪い例
llSetText("Monkeys\n \n \n \n \n ", <1.0, 1.0, 1.0>, 1.0);//良い例

サンプル

llSeTTextで緑のテキストでオブジェクト名を表示するコードを、標準のコードに含ませる方法の例です。

default
{
    state_entry()
    {
         llSay(0, "Hello, Avatar!");
         llSetText(llGetObjectName(), <0.0, 1.0, 0.0>, 1.0); // オブジェクトの現在の名前を緑で表示します。
    }

    touch_start(integer total_number)
    {
         llSay(0, "Touched.");
    }
}

デフォルトではフローティングテキストは位置行で表示されます。しかし、フローティングテキストは "\n" (「関連項目」の SplitLine を参照) を使用して複数行に分けることができます。

色とアルファ

コード
<1.0, 1.0, 1.0>
<0.5, 0.5, 0.5>
<0.0, 0.0, 0.0>
<1.0, 0.0, 0.0>
<0.0, 1.0, 0.0>
<0.0, 0.0, 1.0>

x,y,z のベクトル構成要素は、それぞれ赤、緑、青を表します。値域は従来の RGB の 0 ~ 255 とは異なり、0 ~ 1 を使用します。<1.0, 1.0, 1.0> は「白」で、 <0.0, 0.0, 0.0> は「黒」です。

llSetText("I am white", <1.0, 1.0, 1.0>, 1.0);//白のテキスト
llSetText("I am black", <0.0, 0.0, 0.0>, 1.0);//黒のテキスト

1.0 はアルファ設定で、1.0 が完全不透明、0.0 が完全透明 (非表示) になります。

llSetText("alpha", <0.0, 1.0, 0.0>, 0.5);//50% の透明度の緑のテキスト

複数行

llSetText("I am \n on two lines!", <0.0, 1.0, 0.0>, 1.0);//緑のテキストで 2 行表示

便利なスニペット

このスクリプトをインベントリからドラッグしてオブジェクトにいれると、設定したテキストを削除します。

// http://wiki.secondlife.com/wiki/llSetText
default
{
    state_entry()
    {
        llSetText("", <1.0, 1.0, 1.0>, 1.0);
        llRemoveInventory(llGetScriptName());
    }
}

フローティングテキストの見た目を簡単に指定できるコード:

vector  blue        = <0,0,1>;
vector  orange      = <1,0.5,0>;
vector  cyan        = <0,1,1>;
vector  pink        = <1,0.5,0.76>;
vector  green       = <0,1,0>;
vector  red         = <1,0,0>;
vector  white       = <1,1,1>;
vector  yellow      = <1,1,0.1>;
vector  purple      = <1,0,1>;
vector  black       = <0,0,0>;

string  hoverText   = "TEXT GOES HERE"; // テキストを設定
vector  hoverColor  = white; // 表示するテキストの色を設定します。定義済みの色または RGB 色ベクトルを float で指定してください。
float   hoverAlpha  = 1.0; // テキストの透明度を設定します。1.0 は完全表示、反対に 0 は完全透明です。

default
{
    state_entry()
    {
        llSetText(hoverText, hoverColor, hoverAlpha);
    }
}

注意点

本当にプリムの表面に文字を表示させるには、XyzzyText を参照するか、もしくは メディア のオプションの使用を検討してください (土地のメディアの設定を変更する権限のある場合にのみ使えます) 。

関連項目

定数

•  PRIM_TEXT

記事

•  各種制限 SL の制限と制約
•  LSL での色
•  透明度
•  Examples: SplitLine 「改行」エスケープを文字列の適当な位置に挿入します
•  便利なスニペット: llGetObjectPermMask オブジェクトにタイトルを設定し、次の行にフリーなのか売っているのかを表示します

特記事項

All Issues

~ Search JIRA for related Issues
   llSetText is not working with special characters.

脚注

  1. ^ フローティングテキストの alpha を 1.0 に設定すると「不可視」になります。

Signature

function void llSetText( string text, vector color, float alpha );
この翻訳は 原文 と比べて古いですか?間違いがありますか?読みにくいですか?みんなで 修正 していきましょう! (手順はこちら)
この項目はあなたにとって参考にならない項目ですか?もしかしたらLSL Wikiの関連した項目が参考になるかもしれません。