‫ねえ｡
‫お帰りなさい｡
‫設計図に変数を公開しています｡
‫そして､ コンポーネントの公開についてお話したいと思います｡
‫これにより､ 静的メッシュコンポーネントのメッシュなどのプロパティを設定したり､ カプセルや投射物のスポーンポイントを配置したりすることができます｡
‫さて､ VS Codeに戻り､ テスト用の変数をすべて用意しました｡
‫そして､ プライベートなコンポーネント変数を公開する前に､ もう2つほど､ あなたのプロパティに特有の事柄を学んでおく必要があります｡
‫ひとつは､ テスト用の変数はすべてパブリックセクションにあり､ ここにあるいくつかの変数はイベントグラフに公開され､
‫読み取りアクセスや権利アクセスを許可していますが､ これらはプライベートセクションで許可されていません｡
‫例えば､ visible anywhere intとedit anywhere intを切り取って､ コンポーネントと一緒にプライベートセクションに貼り付けると､
‫このようになります｡
‫ここでコンパイルを試みると､ 以下のようになります｡
‫端末にはいくつかのエラーが表示されています｡
‫blueprint, read, write should not be used on private membersとあり､ Blueprint Read onlyについても同じことが書かれています｡
‫では､ プライベートメンバーに対してイベントグラフで読み取りと書き込みのアクセスを行いたい場合はどうすればよいのでしょうか｡
‫まあ､ これを回避する方法はあるんですけどね｡
‫イベントグラフでプライベート変数にアクセスすることは可能です｡
‫Uにもう一つ入力を追加しなければならない｡
‫プロパティマクロで､ その入力は次のようになります｡
‫私たちは､ メタイコール括弧はプライベートなアクセスイコールと引用符でtrueを許可すると言っています｡
‫さて､ これはかなり変な感じです｡
‫なんだか悪夢のような構文ですが､ こんな感じです｡
‫プロパティマクロでは､ メタデータを使用することができます｡ メタデータとは､ 他のデータに関する情報を与えるデータのことで､ 空想上の言葉に過ぎません｡
‫このメタイコールで､ allow private access equals trueを使用すると､ プライベートな変数であってもイベントグラフに公開することができます｡
‫さて､ もしあなたがこだわりがあって､ 変数にプライベートなアクセス権を与えるのはあまり良い考えではないと思うのなら､ まあ､ こんなことをする必要はないでしょう｡
‫これは､ ブループリントにプライベート変数を公開するための､ ツールボックスの別のツールに過ぎません｡
‫そしてC++側では､ これらはまだプライベートなものです｡
‫他のクラスからこれらにアクセスすることはまだできません｡
‫C++側でカプセル化されているわけですね｡
‫これは､ これらを設計図に取り込み､ 変更を加えることができるようになっただけです｡
‫そして､ 設計図では､ 本当に別世界のようです｡
‫通常､ 誰かが行って変更し､ ゲームを壊す可能性のあるものを設計図に公開することはないでしょう｡
‫でも､ その方法を知っておくと便利です｡
‫そこで､ このメタに､ どこでも見える､ intとどこでも編集の両方のプライベートアクセスを許可することにします｡
‫というわけで､ これをまとめてみましょう｡
‫そして､ ブループリントの書き換えと､ プライベートセクションの変数に対するブループリントの読み取り専用があるにもかかわらず､
‫コンパイルが成功したことがわかります｡
‫BP Pond Tankのイベントグラフに戻り､ 右クリックしてedit anywhereと入力すると､
‫get edit anywhere intと表示され､ まだアクセスすることができます｡
‫最後に､ プロパティに追加できるものとして､ 詳細パネルにあるカテゴリー通知を紹介します｡
‫追加した変数は､ クラスの名前に基づいてこのカテゴリに分類され､ デフォルトでそこに格納されます｡
‫しかし､ このクラスが継承する他の変数もあり､ それらはそれぞれ独自のカテゴリに分類されていることに注意してください｡
‫ここで､ これらの公開された変数に対して独自のカテゴリを作成することができます｡ そのためには､ カテゴリの等号を追加します｡
‫そして､ 引用文では､ これにカテゴリーを与えることができます｡
‫だから､ これは超ド級の変数と呼んでもいい｡
‫今､ ここにカンマがあるのは､ これをUに置いたからです｡
‫プロパティマクロを入力の1つとし､ すべての入力をカンマで区切らなければならない｡
‫これをコピーして､ ここのUプロパティに追加して､ anywhere intも編集できるようにします｡
‫だから､ 今､ これらはスーパーデューパー変数と呼ばれる独自のカテゴリーに分類されるべきです｡
‫コンパイルして､ エディタに戻り､ これをチェックしましょう｡
‫超大型の変数があり､ 変数はここにあります｡ イベントグラフで右クリックしてsuperを検索し､
‫確認することができます｡
‫超弩級の変数があり､ その変数がここにあります｡
‫このように､ 変数を整理することで､ 少しでも見つけやすくすることができるのです｡
‫そこで､ ここに新しいものを2つほど加えてみました｡
‫このメタ指定子によって､ プライベートなアクセス､ プライベートな変数をイベントグラフに公開することができるのです｡
‫また､ 変数に独自のカテゴリーを与えて､ ブループリントで整理することも可能です｡
‫さて､ ブループリントで変数へのアクセスを制御する方法がたくさん分かったので､ 今決めたコンポーネントのyouプロパティを埋めていきます｡
‫そのアクセスレベル｡
‫どこでも編集は部品に与えたくないものなので､ どこでも見えるようにしたいのでしょう｡
‫これは､ 実際にそのポインタ変数を編集できることを意味し､ 我々はポインタを変更したくないのです｡
‫常にオブジェクトを指している必要があります｡
‫コンストラクタで構築しますが､ イベントグラフで読み取り､ 書き込みのアクセス権を与えるかどうか､
‫カテゴリーを与えるかどうかなどを決めることも可能です｡
‫これによって､ 変数の整理ができるようになります｡
‫さて､ 設計図を渡すなら､ 読み取り､ 書き込み､ または設計図読み取り専用｡
‫これらはプライベート変数なので､ そのmetaを指定してプライベートアクセスを許可する必要があります｡
‫さて､ コンポーネントをブループリントに公開したら､ 次にデフォルトのブループリントにいくつかのプロパティを設定します｡
‫静的メッシュコンポーネントに､ 独自の静的メッシュを与えることができます｡
‫それをタンクと砲塔の両方の設計図にセットして､ カプセルを配置します｡
‫つまり､ メッシュの体積をほぼ網羅し､ 投射物のスポーンポイントを､ 投射物のスポーンに意味のあるポイントに配置するのです｡
‫そこで､ ビデオを一時停止して､ コンポーネントをブループリントに公開します｡
‫なるほど｡
‫そこで､ ここではプライベートセクションで､ これらのコンポーネントを公開したいと思います｡
‫さて､ まず､ カプセルコンポーネントをどこでも見えるようにし､ このブループリントを読み取り専用にすることだけ決めて､
‫イベントグラフのカプセルコンプ変数にアクセスできますが､ 設定することはできません｡
‫ここでは､ カテゴリとコンポーネントを指定します｡ ブループリントを読み取り専用にしているため､
‫meta allow private access equals true を使用します｡
‫だから､ そこに置くことにしたんです｡
‫そして､ 残りのコンポーネントについても､ これらと同じyouプロパティの指定子で満足しているので､
‫すべて同じ指定子を与えることにします｡
‫さて､ これをコンパイルして､ エディタに戻って､ ビューポートをクリックして､
‫ここで何をしているかを実際に見ることができます｡
‫静的メッシュのプロパティは､ ここでは -- 戦車のブループリントなので､ tank baseを選択することにします｡
‫それがタンクの底面です｡
‫次に､ タレットのメッシュを選択します｡ その静的メッシュとして､ タレット戦車を選択します｡
‫そして､ 戦車の設計図が実際に戦車のように見えるようになりました｡
‫さて､ 弾丸の発射点を設定する前に､ カプセルのコンポーネントを調整したいと思います｡
‫つまり､ メッシュの体積をほぼ包含しているわけです｡
‫カプセルコンポーネントを選択すると､ カプセルの半分の高さとカプセルの半径のプロパティが表示されます｡
‫半径とカプセルの半分の高さをスケーリングして､ ほぼ正しい形状に見えるようにします｡
‫そして､ カプセルの部品は根元の部品なので､ タンクの位置が下になるように配置する必要がありますね｡
‫他のすべてのコンポーネントをルートに対して相対的に移動させなければならないので､ ベースメッシュを選択して下に移動させることができますね｡
‫そして､ ちょうどいい感じにするために､ このように角度をつけて見たり､ ここにパースペクティブと書いてあるところを持ってきて選択したりしますよね？
‫そして､ オーソグラフィックモードになりました｡
‫ここは全て飛行機の中なので､ 物を動かしたり､ 取りに行ったりすることができるんです｡
‫ちょうど今､ スナップをオフにして､ これをより正確に位置決めできるようにしているところですが､ なかなかいい感じだと思います｡
‫次に､ パースペクティブモードに戻り､ これを見ながらすべてがうまく見えることを確認し､
‫カプセルコンポーネントを選択し､ スケールがちょうどよいことを確認します｡
‫さて､ これをうまくやるには少し調整が必要かもしれませんが､ 少し手を加えるだけで､ かなりいい感じに仕上がります｡
‫だから､ これで満足なんです｡
‫次に､ 投射物のスポーンポイントを配置したいと思います｡
‫スナップをオンに戻し､ バレルの手前まで移動させます｡
‫だから､ これはかなりいい感じです｡
‫さて､ このまま保存して､ いよいよBP pond turretをセットします｡
‫そこで､ ここBP池の砲台で､ ベースメッシュを設定します｡
‫そこで､ タワーのベースを選択し､ タレットのメッシュをタワーのタレットに設定することにします｡
‫これでよしとしよう｡
‫次に､ カプセルカンプを拡大し､ ベースメッシュを下に移動して､ ちょうどよくなるまでこれを微調整します｡
‫また､ 正投影法ビューでスナップをオフにして､ これをほぼ思い通りに配置して､
‫パースに戻すことができます｡
‫なかなかいい感じだと思います｡
‫さて､ 最後は投射物のスポーンポイントです｡
‫スナップをオンに戻し､ バレルのすぐ前に配置します｡ スナップの増分を5に設定し､
‫ちょうど正面に配置できるようにします｡
‫ここで､ 発射体のスポーンポイントがバレルに近すぎないことを確認してください｡
‫ここから弾丸を産み出します｡
‫また､ 生徒の中には､ スポーンポイントが銃身に近すぎて衝突し､
‫弾丸を発射するときに複雑な問題が発生することがあります｡
‫これは､ スポーンポイントを樽から十分に離すことで簡単に解決できます｡
‫そして､ このコーナーの一番最後に磨きをかけるのです｡
‫さて､ それでは最後に､ 世界にいくつか配置することにします｡
‫ここにはすでにBP池の水槽があるんです｡
‫それを地面に置いてみる｡
‫そして､ BP池櫓の事例をいくつか引きずり込んでみましょう｡
‫ここに一つを置き､ 外側に向くように回転させます｡ そして､ 先に進み､ ここの各コーナーに一つずつ配置します｡
‫この中央構造物を守るために｡
‫そして､ これが少しづつ完成品に近づいてきています｡
‫これでよしとしよう｡
‫もちろん､ やろうと思えば､ これを上から､ トップオルソグラフモードで見ることも可能です｡
‫これをもっと正確に位置づけることができる｡
‫しかし､ もちろん､ 洗練されたゲームでは､ これは少しばかり重要ではありません｡
‫すべてをきちんと見せたいと思うはずです｡
‫さて､ 遠近法モードに戻ります｡
‫これはかなり凄いことになりそうだ｡
‫そこで､ セクションプランの話に戻りますが､ 私たちは水槽を作り､ それが世界中を移動することを目標としています｡
‫だから､ これからの講義では､ その方法を学んでいくことになるんです｡
‫この講義では､ コンポーネントをブループリントに公開し､ 戦車と砲塔のブループリントにいくつかのプロパティを設定しました｡
‫素晴らしい進歩です｡
‫次の動画でお会いしましょう｡