UE4の勉強記録

UE4の勉強の記録です。個人用です。

<UE4><C++>ブループリントエディターグラフからアクセス出来るプロパティを作る

<前文>

f:id:kazuhironagai77:20180123071640p:plain

 で勉強しています。

第8章で、ブループリントからアクセス出来るプロパティの作り方が載っているのですが、教科書通りの結果に成らないので、ブログで公開します。もし、正しいやり方を知っている方がいたら、教えて下さい。

<本文>

<目的>

     UE4のエディターでC++のクラス(例えば、アクタークラスのサブクラス)を作ると、そのクラス内のプロパティは、ブループリントからは、通常アクセス出来ません。

例1

f:id:kazuhironagai77:20180123071831p:plain

1.アクタークラスのサブクラスであるブループリントプロパティアクタークラスを作ります。

f:id:kazuhironagai77:20180123071913p:plain

2.ブループリントプロパティアクタークラスにプロパティを作ります。

f:id:kazuhironagai77:20180123071945p:plain

3.ブループリントプロパティアクタークラスのブループリントエディターから、作成したエディターにアクセスしようとしますが、出来ません。

     これでは、ブループリントでゲームを作成する時に不便すぎるので、ブループリントからそのクラスのプロパティにアクセス出来るようにしたいです。

<方法>

     指定子(specifier)を使います。プロパティがブループリントからアクセス出来る指定子(specifier)は、BlueprintReadWriteもしくは、BlueprintReadOnlyです。

f:id:kazuhironagai77:20180123072049p:plain

<結果>

     コンパイルをして、ブループリントエディターを再度開いて見ると、

しっかり、アクセス出来るようになりました。

f:id:kazuhironagai77:20180123072103p:plain

f:id:kazuhironagai77:20180123072150p:plain

ここまでは、良かったのですが、教科書には、「マイブループリントパネルの変数から可視化されるようになる。」(the properties are visible under the category Cookbook in the Variables section of the My Blueprint panel) と書かれています。

     しかし、私の作成したブループリントからは、それらのプロパティは表示されてません。

f:id:kazuhironagai77:20180123072212p:plain

<考察>

     これだけ単純だと、間違えようがないと思うのですが、一応、Packet Publishing 社が提供しているサンプルコードを確認してみました。

f:id:kazuhironagai77:20180123072313p:plain

f:id:kazuhironagai77:20180123072325p:plain

全く同じ結果になりました。

     次に、同じ問題がないか、googleで検索してみました。最初に見つけたのが、C++ declared variables not showing in Blueprint Graphです。環境はMacで、UE4のversionは4.6です。最初の回答は、publicにしないと変数は表示されないよ、とあり、質問者が勿論試したけど駄目だったと返答しています。私のコードも元からpublicになっています。次に、EditAnywhereが必要じゃないのとあり、それも試したけど駄目だったとあります。私も試して見ましたが、駄目でした。

その次の回答は、もう一度、新しいクラスを作ってそこでも同じ問題が起きるが調べたら、という、労多くて益少なし、な助言でした。もちろん駄目でした。ただし質問者がvisual studiowindowsでも試して見たら、問題なく表示されたとあります。質問者もこれ以上聞いても無駄と思ったのか、Good suggestion! I was thinking of that myself if nothing else works. Will report back with my findings. Thanks! :)と書いて質問を閉じてしまいました。

     さらに読み進むと、質問者が自分で解けたよ、とありました。その解答は、UE4エディターをXcodeから直接、デバックモードで起動すると変数として表示された。とあります。更に、コメント欄に、visual studioで同様の問題に当たっている人もデバックモードで試したら出来たと書いています。 早速、私も試して見ました。

f:id:kazuhironagai77:20180123072405p:plain

How to: Set Debug and Release Configurationsによると、ここでDebug modeに変えるそうです。この設定は、Development Editor Win64 で固定しておくようにと教科書のどこかに書かれていたのですが、試しにDebugGame Editorに変えて見ました。

f:id:kazuhironagai77:20180123072433p:plain

     駄目でした。試しに、DebugGame も試しました。

f:id:kazuhironagai77:20180123072615p:plain

出来ませんでした。このbinがないと言っているフォルダーは、このプロジェクトだけでなくすべてのUE4のプロジェクトが利用しているフォルダーなので、限定的なUE4の知識しかない今の状態では、いじりたくないです。なので、この方法の検討は中止しました。

     この解決方法の更に下に、幾つかの役に立つことが出来なかった対策が書かれていました。その一つは、” ”を加えないと認識されないという意見ですが、質問者が試しても駄目だったそうです。私のサンプルも” ”を、加えても駄目でした。

その後に、大変、バカな意見で申し訳ないですが、イベントグラフを右クリックすると、変数としてアクセス出来るよ。と書かれた意見がありました。質問者も当然それは出来ますよ。と答えると思ったら、I have tried right-clicking and checking under variables, but there is no "Power" category, the one I created for them, and the variables are no where to be found.と答えています。

「え~!!」

そんなのは、全く出てこないよ。だって。つまりそれは、この質問者の直面している(していた)問題と私が解決しようとしている問題は、似て非なるものだったという事です。

     また、Can't expose member variables to Blueprintにも、同様の質問が載っていましたが、こちらの回答には、Building Configuration にDevelopment_Editor x64を使え。としかなく、私は最初から使っています。更に、質問者が答えが分かったと自分で回答していますが、その回答がbuildingには問題がなかったが、コンパイルの方法が間違っていたと書いています。質問者の環境がマックなので、私には完全には理解出来ないですが、buildingってコンパイルとlinkingをする事だと思うんですが、コンパイル方法が間違っていたらbuilding方法も必然的に間違っているんじゃないのという感じです。

     これ以上は、気力が持たないので、ここで一端、断念します。もし正しい方法をご存知な方がおられたら、何卒ご教授下さい。