変数が箱っていう例え分かりづらいよね?
めちゃくちゃ小さいHDD(SSD)とかの方がいい気がする。
////////////////////////////////////////////////////////////
// 雑記
////////////////////////////////////////////////////////////
Unreal Engine 4.18 Preview 1 がリリースされました!早い(確認)
ボリュームライトマップやスカイライトの方向性強化、クロスツールのアップグレード、物理アセットエディターとメディアフレームワークを刷新、Google's ARCoreとApple's ARKitのサポートを改善など盛りだくさんです!
WWDC 2017で行われたARデモのiOS向けフォワードレンダラーも今回から使用できるらしいですよ!(ただし推奨スペックはApple A10以上、iOS 10.3以上)
////////////////////////////////////////////////////////////
// ここまで宣伝
// ここから本編
////////////////////////////////////////////////////////////
変数はプログラマーが一生付き合っていく相棒です。
変数とは何ぞや?というとデータを格納する記号なわけですが、
Unreal Engine においての変数はもちろん" ゲームで使用するデータ "を入れるわけです。
なので、Unreal Engineではゲーム制作で使用しやすいようにデータを格納できます。
////////////////////////////////////////////////////////////
// UPROPERTYマクロについて(English)
////////////////////////////////////////////////////////////
このようにUPROPERTYマクロはたくさんあるのですが、
(私が)よく使う順で全部見ていきたいと思います。
// deprecatedは除外しています。
////////////////////////////////////////////////////////////
// ソースコード
////////////////////////////////////////////////////////////
ToyBoxUnrealCpp/UPROPERTY_MACRO at master · ToyBoxUnrealCpp/ToyBoxUnrealCpp · GitHub
ここに置いておきますね。
////////////////////////////////////////////////////////////
// デザイナーにぶん投げる系
////////////////////////////////////////////////////////////
EditAnywhere, EditDefaultsOnly, EditInstenceOnly
Editとついているので分かりやすいです。
エディタのディテールパネルから編集できるようにする指定子です。
レベルエディタにはm_editAnywhereとm_editInstanceOnlyが…
ブループリントエディタにはm_editAnywhereとm_editDefaultsOnlyがいるのが確認できますね!
////////////////////////////////////////////////////////////
// 数値を確認する系
////////////////////////////////////////////////////////////
VisibleAnywhere, VisibleDefaultsOnly, VisibleInstanceOnly
Edit~と同じですね。
ただし、グレーアウトして編集不可となっています。
////////////////////////////////////////////////////////////
// 表示方法系
////////////////////////////////////////////////////////////
Category = "CategoryName", Category = "MainName|SubName"
Category指定子でエディタ上の表示カテゴリを指定できます。
|(orBit演算子)でサブカテゴリを指定できます。
実は””で囲む必要はなかったりしますが、私は囲む方が好きです。
SimpleDisplay, AdvancedDisplay
m_simpleDisplayはシンプルですね。
m_advancedDisplayは▼を押すとドロップダウンリストが出てきます。
////////////////////////////////////////////////////////////
// ブループリント系
////////////////////////////////////////////////////////////
BlueprintReadOnly, BlueprintReadWrite
m_blueprintReadOnlyをブループリント上で呼び出すと…
Getしかありません。
Setがないのでこの変数はブループリント上では変更できませn。
m_blueprintReadWriteを呼び出すと…
GetとSetがありますね!
////////////////////////////////////////////////////////////
// 配列系
////////////////////////////////////////////////////////////
EditFixedSize
可長変配列の配列数をエディタから変更できなくします。
ソースコード上からは変更できます。
上は+で増やせます。
下は変更できません。
////////////////////////////////////////////////////////////
// デリゲート系
////////////////////////////////////////////////////////////
Unity、C#勢はなじみ深いでしょうかね?
C、C++勢の方は関数ポインタと言えば伝わるでしょうか?
デリゲートです。
UnrealC++はC#からデリゲートを逆輸入しています。
BlueprintAssignable, BlueprintCallable
Assignableはデリゲートをバインドする関数、
Callableはデリゲートをコールする関数に結びつけます。
m_blueprintAssignableはバインド系の関数が来てますね!
m_blueprintCallableはコール系の関数が来ています。
BlueprintAuthorityOnly
この指定子が付けられたデリゲートは、BlueprintAuthorityOnlyのイベントのみ受け付けます。
// ???よくわからない…
////////////////////////////////////////////////////////////
// エディタ上でなんかする系
////////////////////////////////////////////////////////////
Instanced
オブジェクト型しかつけられません。
このクラスがインスタンスとして生成されたとき、
この指定子がつけられた変数のオブジェクトのコピーが与えられます。
m_instancedなんかおる。
SaveGame
そのまんまです。
セーブのためにシリアライズします。
Transient, DuplicateTransient, NonPIEDuplicateTransient, TextExportTransient
Transient
この変数は外部ファイルへの保存をしない設定になります。
SaveGameと同時には扱えません.
エディタを再起動すると…
0で初期化されています。
DuplicateTransient
Duplicate時(このオブジェクトをコピーして何かしらするとき)にこの指定子がついている変数は外部ファイルへの保存を禁止します。
エディタを再起動すると…
値は保存されています。
レベル上のオブジェクトをコピペすると…
0で初期化されています。
NonPIEDuplicateTransient
// ネットワーク作るのめんどくさかったので説明だけ
PIE(Play in Editor)セッション用に複製されていない場合、シリアライズしません。
TextExportTransient
テキストをコピー/ペーストするときに値をシリアライズすることを禁止します。
レベル上のオブジェクトをコピペすると…
0で初期化されています。
NoClear
エディタ上のClearボタンとNoneボタンを非表示にします。
m_yesClear/* YesClearってなんだよ */にはclearボタンがあります。
m_noClearにはclearボタンがありません。
// Noneはなんかどっちもなかった…
NonTransactional
この指定子が付けられた変数はアンドゥ/リドゥができなくなる。
Export
よくわかりません。
説明見る限り、エクスポート時にオブジェクトデータ丸ごとテキスト化すると書いてあるので、
このオブジェクトへの参照パスを登録せずにインポート時にこのオブジェクト丸ごと再生成するみたいな感じ?
////////////////////////////////////////////////////////////
// ネットワーク系
////////////////////////////////////////////////////////////
// ネットワーク作るのがめんどくさかったので説明だけ。
// 私は使ったことありません。
Replicated
ネットワークからレプリケートする変数としてマークアップします。
サーバー側が常にプロパティの更新を行い、
その値をクライアント側にレプリケートします。
ReplicatedUsing
ReplicatedUsing = Functionで定義されたFunctionがコールバック関数として登録されます。
この変数がレプリケートされるときは、コールバック関数が実行されることで、ネットワークじょうでレプリケートされます。
RepRetry
このプロパティは完全な状態で送信されなかった時には再送信されます。
NotReplicated
レプリケーションをスキップします。
この指定子はサービスリクエスト関数の構造体メンバとパラメータのみに有効です。
////////////////////////////////////////////////////////////
// コンフィグ系
////////////////////////////////////////////////////////////
Config, GlobalConfig
Configで指定された.iniファイルへ永続的な値としてセーブされます。
GlobalConfigはConfigと同じですが、必ずベースクラスから読み込まれるようになります。
////////////////////////////////////////////////////////////
// アセットデータ系
////////////////////////////////////////////////////////////
AssetRegistrySearchable
なんかタグが自作できるっぽいです。
// 参考サイト
AssetDataの中にはパスやらなんやら色んなデータがありますが、
その中にTagsAndValuesという変数があるっぽいですね。
AssetRegistrySearchable指定子をつけてあげると、その変数の中に追加されると…
// なるほどわからん
一応アセットデータの中にはそれっぽいものがありました。
////////////////////////////////////////////////////////////
// マチネ系
// 使ったことない筆頭
////////////////////////////////////////////////////////////
Interp
マチネで使える補間可能な変数。
常にエディタ上から編集できる。
すごい多いです。
この他にもメタデータ指定子というのが同じくらいあります。
では今日はここまで。
////////////////////////////////////////////////////////////
// 参考サイト
////////////////////////////////////////////////////////////
// UPROPERTY一覧
https://wiki.unrealengine.com/UPROPERTY#Instanced
// T3Dについて
http://historia.co.jp/archives/2588
// Exportについて
https://answers.unrealengine.com/questions/79810/uproperty-whats-the-use-of-the-export-keyword.html
// レプリケーションとは
// アセットレジストリについて
https://wiki.unrealengine.com/UPROPERTY#Instanced
/* ありがとうございました */