Selfノードはそのクラスではなく個別のインスタンスを取得する
妹「EndOverlapが思ったように動いてない気がするんだけど、どうやって調べたらいいんだろうか?」
「普通にブレークポイントを置くか、PrintStringで調べるかすればいいのでは?」
妹「ブレークポイントだと動きが全部とまっちゃってわかりにくいし、PrintStringだとたくさんあるアクターのどれが反応してるのかわからないよ」
「区別出来ないんだったら、SelfからNameを取ってきて、それをPrintしたらいいのでは?」
妹「え……Self? Selfで自分の名前をPrintしても、結局どれも同じのをPrintするだけのような」
「自分の名前だから全部別になると思うんだけど……」
妹「あれー? Selfってそういう物なの?」
「例えばこういう風にDisplayNameをPrintStringすれば」
「こういう風にアウトライナに表示されてる名前が出てくる。1個1個違う名前だから、どのアクターで起きたイベントなのか区別できる」
妹「そういう物だったのか。てっきりブループリントそのものだから、全部同じになるのかと思ってた」
「自分自身のブループリントクラスじゃなくてインスタンスだから。むしろクラスは同じだけど中身が違うから必要なノードというか。C++でいうthisポインタだけど、同じ用途でselfと書く言語もあるから、ブループリントではそっちの書き方を採用したんだと思う。というかこれ知らなかったら、めちゃくちゃ苦労したのでは?」
妹「特にそれで苦労してたつもりはなかったけど、そういうのはできないという前提で考えてたから、なんか色々損してた気はする」
「Selfは普段から使ってるはずなんだけど省略できる事が多い。普通に変数のノードをドラッグ&ドロップしてGETノード作るのも、Selfノードから引っ張ってきたGETノードも、やってることは同じ。ピンに何も設定してないとSelf扱いになるノードもある。そのアクターが持ってる変数だけど、普通の方法では上手くノードが作れない時は、Selfノードから引っ張るとたいてい出てくる。あと自分自身への参照を変数にSETしたい時とか」
妹「Self重要だったんだな……」