x

Search in
Sort by:

Question Status:

Search help

  • Simple searches use one or more words. Separate the words with spaces (cat dog) to search cat,dog or both. Separate the words with plus signs (cat +dog) to search for items that may contain cat but must contain dog.
  • You can further refine your search on the search results page, where you can search by keywords, author, topic. These can be combined with each other. Examples
    • cat dog --matches anything with cat,dog or both
    • cat +dog --searches for cat +dog where dog is a mandatory term
    • cat -dog -- searches for cat excluding any result containing dog
    • [cats] —will restrict your search to results with topic named "cats"
    • [cats] [dogs] —will restrict your search to results with both topics, "cats", and "dogs"

[Closed] (動画チュートリアル関連) 変数名が同じなのに同じ値にならないのはなぜ?

動画チュートリアル『3rd Person Game with Blueprints - 18 - Animation Blueprint Punching Setup』では、キャラクターのブループリントとアニメーションのためのブループリントで同じ名前の変数 IsPunching? を使っています。同じ変数ならば、わざわざ Cast を使わなくても、アニメーション ブループリントの IsPunching? 変数は、キャラクターブループリントの IsPunching? 変数と同じ値をもつのではないでしょうか?

samevar_0

▶関連する動画チュートリアル 3rd Person Game with Blueprints - 18 - Animation Blueprint Punching Setup

Product Version: Not Selected
Tags:
samevar_0.png (1.4 MB)
more ▼

asked Sep 09 '16 at 03:35 AM in Japanese

avatar image

ymars STAFF
243 45 57 77

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

The question has been closed Sep 09 '16 at 03:43 AM by ymars for the following reason:

The question is answered, right answer was accepted


1 answer: sort voted first

ブループリントが異なれば、同じ名前の変数でも異なる変数という扱いになります。言い方を換えれば、 変数はブループリント単位で管理される ため、ブループリントが異なれば、たとえ同じ名前の変数であっても「同じ変数」ということにはなりません。別の変数です。一方の変数の値を変更しても、他方の同名の変数の値が変わることもありません。

ですから、その動画チュートリアルでは、キャラクターブループリントの IsPunching? の値を得るために、Cast でキャラクターブループリントであるかどうかを判定してから、キャラクターブループリントの IsPunching? 変数を利用しています。

「ブループリントが異なれば、同じ名前の変数でも異なる変数」であることは、次のような実験で確かめることができます。

まず、コーンのブループリントを作り、ゲームが開始すると (Event BeginPlay が発動する) SameName という変数に -888 をセット (代入) してから SameName の値を表示する (当然 -888 が表示される) ブループリントを組んでおきます。

samevar_1

他方、キャラクターのブループリントでは、キーボードの F を押すと、同名の変数 SameName の値を表示するようにします。こちらの SameName には初期値として 1234 を入れておきます。

samevar_2

ゲームを実行すると、次のように、まず Event BeginPlay が発動して、-888 (コーンの方の SameName 変数の値) が表示され、その後に F を押すと、1234 (キャラクターの方の SameName 変数の値) が表示されました。

samevar_3

このように、いくらコーンの方の SameName 変数に値を新たにセットしても、キャラクターの方の SameName 変数には何ら影響がないことがわかりました。

逆に、影響を与えたい場合は、動画チュートリアルのように Cast を使ってコーンのブループリントで次のようなグラフを組むことができます。

samevar_4

上では、Event Hit すると (このコーンに何かがぶつかると)、そのぶつかったものがキャラクターかどうかを Cast で判定して、もしそうならば、As ピンを使ってキャラクターの SameName 変数に 4649 という値をセットしています。

Play をクリックして、コーンのところまで歩いて行き、ぶつかり、F キーを押すと、今度は 1234 ではなく、4649 が表示されました。つまり、キャラクターの SameName 変数の値は、コーンのブループリントによって書き換えられたことになります。

samevar_5

このように変数はブループリント単位で管理されることによって、気軽に変更できないようにしており、間違って値を変更できないようになっています。変更したりするには、それなりの手続き (Cast を使って etc) が必要となります。

▶関連する UE4 AnswerHub スレッド (動画チュートリアル関連) コンパイルすると関数でエラーになるのはなぜ?

▶関連する UE4 AnswerHub スレッド

samevar_1.png (143.2 kB)
samevar_2.png (141.5 kB)
samevar_3.png (1.1 MB)
samevar_4.png (160.2 kB)
samevar_5.png (1.2 MB)
more ▼

answered Sep 09 '16 at 03:43 AM

avatar image

ymars STAFF
243 45 57 77

(comments are locked)
10|2000 characters needed characters left
Viewable by all users

Follow this question

Once you sign in you will be able to subscribe for any updates here

Answers to this question