Type(型)
Resoniteでは型の概念を知らなくても、なんとなくモノづくりできちゃいます。
しかし、複雑なギミックを作ろうとすると、データ型に関する知識が必要になってくるはずです。
ここでは、わかりやすさ優先で概要のみの解説を行います。
より詳しく正確な内容を知りたい方は、公式Wikiをご覧ください。
型とは何か?
型(Type)とは、データの種類に応じて、扱うデータを定義しているモノです。
数値は数値用の型で扱い、文字は文字列用の型で扱います。このように値の種類毎に型があります。
なぜ型が必要なのか?
例えば、『100』というデータが存在します。
型が無い場合、数値なのか文字列なのか区別できません。もし数値だとしても10進数か2進数か区別できません。
型があれば区別可能で、効率的です。
型は2種類に分類できます。
- ValueType(値の型)
データ(値)を持つ型です。
https://wiki.resonite.com/Value_type
https://wiki.resonite.com/Category:Value_types
- ReferenceType(参照の型)
参照IDを渡すための型です。
https://wiki.resonite.com/Reference_type
https://wiki.resonite.com/Category:Reference_types
この二つは全く異なる性質です。
値の型は自身が値を格納している型なのに対して、参照の型は参照IDを渡す為の型です。
最初はよくわからないかもしれませんが、型は2種類あり使い分ける必要がある事だけ覚えておきましょう。
さらに、これらは単純な型と複雑な複合型に分かれます。
(さらにもっと細かく分類できますが、ややこしくなってしまうので割愛します。)
ValueTypeの種類について
単純な値型がおおよそ52種類、それ以外に列挙型とNull許容型等があります。
よく使う型を一部抜粋してご紹介いたします。
- bool
- 真理値。(ブール)
TrueかFalseのいずれかの値のみ。
一番よく使うかも。
- colorX
- 色と色空間。(カラー エックス)
色を数値4つ(R,G,B,A)で決めます。例えば、赤色不透明なら1,0,0,1です。
ColorX型はColorProfileも一緒に持っています。
ResoniteではColor型よりもColorX型の方がよく使われます。
- float
- 浮動小数点数。(フロート)
小数点を含む数値を扱えます。
floatは処理効率は良いけれども、丸め誤差が生じるのが弱点です。
(細かな計算を正確に行う必要がある場合はdouble型等を使用しましょう。)
- float3
- 浮動小数点数の3D(3次元)版。(フロート スリー)
X,Y,Zの3つセットで数値を持ちます。
スロットのポジションやスケール等に使用されています。
- floatQ
- 浮動小数点数のクォータニオン版。(フロート キュー)
一見するとfloat3と同じように見えますが、中身は違います。
クォータニオンはX,Y,Z,Wで構成されますが、とても難しいので、扱い易いオイラー角(X,Y,Z)で表現されます。
スロットのローテーション等に使用されています。
- int
- 整数。(イント)
2,147,483,647~-2,147,483,647までの整数を扱えます。
(もし足りない場合は、long型を使用しましょう。)
- string
- 文字列。(ストリング)
文字を扱えます。
その他、特殊な型について
- Null許容型
- 値の不在を示す事ができる型です。
最後に「?」が付きます。(例:int?、float?、bool?)
インスペクター上では、boolと値のセットになっているところです。(左側のboolがFalseの時、右側の値がnullになります。)
- 列挙型
- 予め決められた値のリストがある型です。
整数値で選択します。(インスペクター上では、左右ボタンで選択するところです。)
Category:Enums - Resonite Wiki
- Bobool3ol:
- タイプミスから生まれたミームです。
ジョークです。実用性はありません。
ReferenceTypeの種類について
参照型は値型よりも難解です。
インターフェース型とシンク型等があります。
コンポーンネントアタッチ時の型選択候補にも出てこないので、自分で入力する必要があります。
公式純正のFluxツールには型を表示する機能があるので、単純な型は調べれば分かります。
複合型等はさらにややこしいので理解するのは大変です。(型を調べるMODで楽ができます。)
よく使う型や便利な型を一部抜粋してご紹介いたします。
- Slot
- スロット。
- User
- ユーザー。
- Grabber
- グラバー。
- IAssetProvider<ITexture2D>
- アセット(テクスチャ)。
(<>内を変更すれば、他のアセットにもできます。)
コンポーネントやFluxでの扱い方
それぞれの型に色が付いています。さらに、2Dなら二本線、3Dなら三本線となっているので、型の種類や名前が分からなくても一目で何と何が繋がるのか理解できます。
また、Fluxでは異なる型の値でも自動変換可能な型であれば、変換(キャスト)接続できるので簡単です。
コンポーネントには自動変換機能は無いので、自分で各種変換コンポーネントを使用する必要があります。
初心者さんは、Fluxの方が見た目で分かりやすいので、最初は簡単なFluxから学習する事をお勧めします。
コンポーネントをアタッチするとき、型の選択が必要な場合があります。
例えば、BooleanValueDriver<T>を使用する際、どの型にするか選ぶ必要があります。
(コンポーネント名の末尾に<T>と書いてあるのは、Typeが選べるという事です。)
型を選ぶ際、基本的な型は一覧に表示されるので、そこから選択する事になります。
しかし特殊な型の場合は一覧に表示され無いです。手動で型を入力する必要があります。(スペルミスや大文字小文字の区別に気を付けましょう。)