Difference between revisions of "LlSetText/ja"

From Second Life Wiki
Jump to navigation Jump to search
m
 
(6 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{LSL Function/color/ja|color}} {{LSL Function/alpha/ja|alpha}}{{LSL_Function/ja
{{:PRIM_TEXT/ja|set}}{{Issues/SVC-4539}}{{LSL_Function/ja
|func_id=152
|func_id=152
|func_sleep=0.0
|func_sleep=0.0
Line 5: Line 5:
|func=llSetText
|func=llSetText
|sort=SetText
|sort=SetText
|p1_type=string|p1_name=text|p1_desc=ダブルクオーテーション(")で囲まれたテキストを表示します。
|p1_type=string|p1_name=text
|p2_type=vector|p2_name=color
|p2_type=vector|p2_name=color
|p3_type=float|p3_name=alpha
|p3_type=float|p3_name=alpha
|func_desc=''''''と透過率('''アルファ'''で指定します)を指定して、プリムの上に'''テキスト'''を表示します。
|func_desc='''color''' と透過率 ('''alpha''' で指定します) を指定して、プリムの上に '''text''' を表示します。
|return_text
|return_text
|spec=
|spec=
|caveats=
|caveats=
*A script calling llSetTextを呼び出したスクリプトはもしフロートテキストが変わったかそうでなくても、[[llGetText/ja|llGetText]]の関数が無いために知ることが出来ません
*llSetText を(リセット、対話式またはスクリプトのステートで) 同一プリムで 2 回以上呼び出すと、最後の呼び出しが以前のものより優先されます。
*フロートテキストはプリムの設定であってスクリプトではなく、スクリプトが無効化あるいは除去されても、そのままテキストは残ります。
*'''text''' は 254 [[バイト]] に [[各種制限|制限]] されます。文字列がそれより長い場合、文字が泣き別れしようがお構いなしに、254 バイトにカットされます。
**フロートテキストを除去するには、一度空文字を設定しなければいけません
*非常に長い途切れのないテキストは、自動的に (上下) 2 行に分割されることがあります。
<lsl>
*フローティングテキストは壁やその他のオブジェクトからすり抜けて見えることがあります。モールやアパートの隣の人に配慮してください。
llSetText("", <1.0, 1.0, 1.0>, 1.0);
**見える範囲はプリムの大きさに比例します。
</lsl>
*スクリプトを削除しても非アクティブ化しても、プリムのフローティングテキストは削除されません。
*空改行はテキストの終端から除去されるので、何文字か縦に空白がほしいのなら、行末に何文字か(スペースのように)入れます。
**フローティングテキストはプリムのプロパティで、スクリプトが存在しつづけなければならないものではありません。
<lsl>
*フローティングテキストを削除するには、以下を使用してください。
llSetText("Monkeys\n\n\n\n\n", <1.0, 1.0, 1.0>, 1.0);//Bad
<source lang="lsl2">llSetText("", <1.0, 1.0, 1.0>, 1.0);</source>
llSetText("Monkeys\n\n\n\n\n ", <1.0, 1.0, 1.0>, 1.0);//good
*Shift コピーはフローティングテキストのプリムプロパティを維持しません。llSetText() がコピーされたときに発生しなければ、コピーにはフローティングテキストはつきません。
</lsl>
*空行はテキスト文字列の終端から削除されます。このため、空行を作りたいときには最後の行に何か文字 (空白など) を入れてください。
*複数の空行となる改行は 1 つの改行に変換されます。このため、スキップしたい全ての行に空白文字を追加してください。
<source lang="lsl2">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);//良い例</source>
|examples=
|examples=
llSeTTextで緑のテキストでオブジェクト名を表示するコードを、標準のコードに含ませる方法の例です。
llSeTTextで緑のテキストでオブジェクト名を表示するコードを、標準のコードに含ませる方法の例です。
<lsl>
<source lang="lsl2">default
default
{
{
    state_entry()
    state_entry()
    {
    {
        llSay(0, "Hello, Avatar!");
          llSay(0, "Hello, Avatar!");
        llSetText(llGetObjectName(), <0.0, 1.0, 0.0>, 1.0); // オブジェクトの現在の名前を緑で表示します。
          llSetText(llGetObjectName(), <0.0, 1.0, 0.0>, 1.0); // Display object's name in green
    }
    }
 
    touch_start(integer total_number)
    touch_start(integer total_number)
    {
    {
        llSay(0, "Touched.");
          llSay(0, "Touched.");
    }
    }
}</source>
}
デフォルトではフローティングテキストは位置行で表示されます。しかし、フローティングテキストは "\n" (「関連項目」の [[SplitLine]] を参照) を使用して複数行に分けることができます。
</lsl>
===色とアルファ===
フロートテキストの初期状態は一行で表示されるでしょう。しかしながら、フロートテキストは改行"\n"(セクション''関連項目''内の[[SplitLine/ja|SplitLine]]を読みましょう)を用いることで、複数以上に広げることが出来ます。
{{{!}} class="sortable" {{Prettytable|style=float:right; margin-top:0;}}
色の例:
{{!}}- {{Hl2}}
<lsl>
! 色
vector white = <1.0, 1.0, 1.0>;
! コード
vector red = <1.0, 0.0, 0.0>;
{{!}}- style="background:white"
vector green = <0.0, 1.0, 0.0>;
{{!}}白
vector blue = <0.0, 0.0, 1.0>;
{{!}}<1.0, 1.0, 1.0>
vector grey = <0.5, 0.5, 0.5>;
{{!}}- style="background:grey"
vector black = <0.0, 0.0, 0.0>;
{{!}}灰
</lsl>
{{!}}<0.5, 0.5, 0.5>
<1.0, 1.0, 1.0> は赤、緑、そして青の要素を描写します。
{{!}}- style="background:black; color:white;"
<1.0, 1.0, 1.0>は"白"を意味し、<0.0, 0.0, 0.0>""を意味します。
{{!}}{{!}}黒
<lsl>
{{!}}<0.0, 0.0, 0.0>
llSetText("I am on", <1.0, 1.0, 1.0>, 1.0);
{{!}}- style="background:red; color:white;"
</lsl>
{{!}}赤
<lsl>
{{!}}<1.0, 0.0, 0.0>
llSetText("I am off", <0.0, 0.0, 0.0>, 1.0);
{{!}}- style="background:green; color:white;"
</lsl>
{{!}}緑
1.0はアルファの設定です。1.0は完全な不透明、そして0.0は完全な透過(隠蔽)です。
{{!}}<0.0, 1.0, 0.0>
<lsl>
{{!}}- style="background:blue; color:white;"
llSetText("alpha", <0.0, 1.0, 0.0>, 0.5);
{{!}}青
</lsl>
{{!}}<0.0, 0.0, 1.0>
複数行
{{!}}}
<lsl>
x,y,z のベクトル構成要素は、それぞれ赤、緑、青を表します。値域は従来の RGB の 0 ~ 255 とは異なり、0 ~ 1 を使用します。<1.0, 1.0, 1.0> は「白」で、 <0.0, 0.0, 0.0> は「黒」です。
llSetText("I am \n on two lines!", <0.0, 1.0, 0.0>, 1.0);
<source lang="lsl2">llSetText("I am white", <1.0, 1.0, 1.0>, 1.0);//白のテキスト</source>
</lsl>
<source lang="lsl2">llSetText("I am black", <0.0, 0.0, 0.0>, 1.0);//黒のテキスト</source>
1.0 はアルファ設定で、1.0 が完全不透明、0.0 が完全透明 (非表示) になります。
<source lang="lsl2">llSetText("alpha", <0.0, 1.0, 0.0>, 0.5);//50% の透明度の緑のテキスト</source>
===複数行===
<source lang="lsl2">llSetText("I am \n on two lines!", <0.0, 1.0, 0.0>, 1.0);//緑のテキストで 2 行表示</source>
|helpers=
|helpers=
このスクリプトをインベントリからドラッグしてオブジェクトにいれると、設定したテキストを削除します。
このスクリプトをインベントリからドラッグしてオブジェクトにいれると、設定したテキストを削除します。
<lsl>
<source lang="lsl2">// http://wiki.secondlife.com/wiki/llSetText
// http://wiki.secondlife.com/wiki/llSetText
default
default
{
{
     state_entry()
     state_entry()
     {
     {
         llSetText("", <0.0, 0.0, 0.0>, 0.0);
         llSetText("", <1.0, 1.0, 1.0>, 1.0);
         llRemoveInventory(llGetScriptName());
         llRemoveInventory(llGetScriptName());
     }
     }
}
}</source>
</lsl>
フローティングテキストの見た目を簡単に指定できるコード:
<source lang="lsl2">
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);
    }
}</source>
|also
|also
|also_functions
|also_functions
|also_constants=
{{LSL DefineRow||{{LSLG/ja|PRIM_TEXT}}}}
|also_articles=
|also_articles=
{{LSL DefineRow||[[:Category:LSL Examples/ja|]]: [[SplitLine/ja|SplitLine]]|文字の幾つかの場所に'改行'のエスケープコードを挿入します}}
{{LSL DefineRow||[[:Category:LSL Examples|Examples]]: [[SplitLine]]|「改行」エスケープを文字列の適当な位置に挿入します}}
{{LSL DefineRow||Useful snippet: [[llGetObjectPermMask/ja|llGetObjectPermMask]]|フリーなのか有料なのか、テキストと改行でオブジェクトを分類します}}
{{LSL DefineRow||便利なスニペット: [[llGetObjectPermMask]]|オブジェクトにタイトルを設定し、次の行にフリーなのか売っているのかを表示します}}
|notes=本当にプリムの表面に文字を表示させるには、[[XyzzyText]] を参照するか、もしくは {{LSLGC/ja|Media}} のオプションの使用を検討してください (土地のメディアの設定を変更する権限のある場合にのみ使えます) 。
|cat1=Effects
|cat1=Effects
|cat2=Prim
|cat2=Prim
|cat3
|cat3=Stop
|cat4
|cat4=Floating Text
|cat5=Text
}}
}}

Latest revision as of 05:27, 25 February 2016

要約

関数: 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);//良い例
All Issues ~ Search JIRA for related Bugs

サンプル

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の関連した項目が参考になるかもしれません。