BluePrintの配列について

BluePrintをActorで作成し、

それを別のBluePrintで配列(クラスポインタ?)として宣言し、
Addした時に
中身がNoneの状態になります。

AddしたBluePrint内の変数(この場合LinePos)にアクセスできませんし、
関数(例えばAddTrans)を呼び出す箇所をステップ実行で通過しても
アクセス出来なかったとログが出ます。

AddはC++の「new」ではなく、メモリを確保するようなものなのでしょうか?
よろしくお願い致します。

実際に見ないと少し分かりにくいですが、確かにその流れだと配列に追加されるはずです。SpawnActorで失敗しているかな?SpawnActorのReturn Valueをログして、RailLineのインスタンスがちゃんと生成されているかを確認してみてください。

又はSpawn Even if Collidingにチェックを入れて、結果が同じかどうかを確認してみてください。もしかしてコリジョンの関係で生成されていないかもしれません。

返信ありがとうございます。
調べましたところ、Spawn Even if Collidingに関係なく、Actorは返しているようなのですが、
4226-
Add関数に返ってきた値を渡しても配列に追加されていないようです。
この構文ではマズいのでしょうか…
ひとまず投稿致します。
よろしくお願いします。

私の環境で試したところ、問題なく配列に追加されました。スクリーンショットを見ても、おかしなところはなさそうですが。。。

↓の画像のように、SpawnしたActorの名前を画面に出力してみたらどうなるでしょうか?

正しくSpawnされていれば、「RailLine0」のような文字がViewport左上に出るはずです。

返信ありがとうございます。
スクリーンショットと同じようにGet Display Nameで名前を取得したところ、
文字列は空っぽの状態(NULL)でした。

MyActor_Cは、Variablesに定義する他は、
Addするまでに何かされていますでしょうか?

よろしくお願い致します。

SpawnActorが失敗しているらしく、ステップ実行を行ってもSpawnしたいActorの中身をトレースできませんでした。
モデルか何かを設定しないとダメなのでしょうか?

直近のログです。

0:06のはBluePrintをいじってる最中に落ちました。
0:15のはステップ実行でSpawnActor通過後に停止させました。
よろしくお願いします。

link text

すみません、すっかり見逃してました。
SpawnActorに失敗した際に、ログウィンドウに何がログは出ていないでしょうか?

ログウィンドウはメニューのWindow->OutputLogから表示できます。
Spawnに失敗したときには、よくここに出るログになぜ失敗したのかが表示されるのですが。。。

SpawnActorを行います。
表示されるメッセージは以下になります。

LogSpawn:Warning: SpawnActor failed because we are running a ConstructionScript (RailLine_C)
LogBlueprintDebug:Warning: Hit breakpoint on node ‘K2Node_SpawnActorFromClass’, from offset 615
LogBlueprintDebug:
Script call stack:
Function /Game/D/BP/Rail.rail_C:UserConstructionScript
Function /Game/D/BP/Rail.rail_C:SetUp
Function /Game/D/BP/Rail.rail_C:CreateRailLine

ConstructionでSpawnしちゃダメ…?

なるほど、ConstructionScript!

今試そうとしたら、Ver 4.0.2ではそもそもConstructionScriptにSpawnActorFromClassを置くことが出来ませんでした。
ぱっと思いつく解決方法は次の2つです。

  1. ActorをSpawnするのではなく、そのActorのComponentとして追加する
  2. EventGraphのEvent Begin Playに処理を移動する

1はいろいろと処理を変更しなくてはいけないので、2で問題ないようでしたらこちらの方が良いと思います。

そうですね。ConstructionScriptでSpawnActorを使えません。なぜかというと、ブループリントを移動したり、変数を変えたりする度にConstructionScriptが再度計算されますので、そこでActorをSpawnすると、アクターがすごい数に増えてしまいます。

ConstructionScriptでブループリントを追加したいなら、AddChildActorComponentのノードを使ってみてください。ChildActorがエンジン側で管理されますので、アクターがバカな数になる問題はありません。

ありがとうございます。
2の方法で作成致します。