BlackSheep-LSL@Wiki

プリム/オブジェクト

最終更新:

mizcremorne

- view
メンバー限定 登録/ログイン

面?

テクスチャ?

色/透明度?

リンク?

Rez?

UUID

UUIDとは (Universal Unique IDentifier)の略で、SL内のあらゆるものを識別するためのキーとして使われています。
日本語では「汎用一意識別子」という名前が付いていますが、何やら堅苦しいせいか使われているのを見たことがありません。
その名が示すとおり、UUIDとは本来SLに限ってのキーではなく、様々なものを識別するのに利用可能な汎用的な仕様です。
OSF(Open Software Foundation)というオープン仕様を色々策定している組織が定めています。

UUIDは128bitの数値(=32Byte=18446744073709551615)であり、この天文学的な数値がかぶることはほぼあり得ません。
さらに言うなら、このUUIDの生成方法も仕様で決められており、ベースとして時間を元にしています。
つまり作成時間が異なれば、異なるUUIDが生成されます。
SLでは、そのオブジェクトやアバターが作られた時間・Rezされた時間を元にUUIDを作成しているようです。
仮にまったく同じ瞬間に作成されたとしても、時間+固有の番号を割り振りますので、UUIDは必ず各オブジェクト・アバターごとに固有のものとなることが保証されると言っていいでしょう。

UUIDは以下のような値になっています。
3F2504E0-4F89-14D3-9A0C-0605E82C3301
66864E3E-E095-A9F8-058C-D6F75B6341F8
これをLSLではkey型データとして扱います。
Key型データは特殊な文字列型で、上記のようなUUIDを文字列として保持しています。
LSLの多くの関数でこのKey型データを使って、アバターやオブジェクト、テクスチャやアニメーション、はたまたグループなどを識別します。
まったく同じ名前のオブジェクトが複数あったとしても、UUIDが異なるので処理対象を間違わずに済みます。

また、LSLではアバターやオブジェクトのUUIDを取得する方法が様々に用意されていますので、UUIDの中身(具体的な32個の16進数)を意識する必要が極力ないようになっています。
例えばオブジェクトのオーナーのUUIDを取得するにはllGetOwner関数を実行するだけで良く、実際にオーナーのUUIDがどんな値なのかを知る必要はあまりありません。

UUIDの特殊な値として、定数NULL_KEYで定義されている"00000000-0000-0000-0000-000000000000"があります。
この値はkey型データの初期値として使われる他、リッスンやセンサーにおいては「全てのUUID」を意味します。
また、if文などの条件判定においては、NULL_KEYはFALSE、NULL_KEY以外はTRUEとして評価されます。

integer isNullKey(key id){
  if (id) {
    return TRUE;
  }else{
    return FALSE;
  }
}

オブジェクトのUUIDは、そのオブジェクトがrezされたタイミングで生成されます。
つまりSLワールド上に存在するオブジェクトは、全て異なったUUIDを持っていると考えて支障ありません。
その一方、テクスチャやアニメーションなどのアイテム類はアップロードされた時点でUUIDが付与されているようです。
アイテムごとのUUID生成タイミングの一覧表があったら便利かもしれませんね(作った人、作ってくれる人など募集中w)。

名前:
コメント:
記事メニュー
目安箱バナー