14

onValueChanged イベントを GUI スライダーにアタッチしようとしていますが、何らかの理由で値を入力するための必須オプションが表示されます (「値の変更時 (単一)」セクションの 4 番目のボックスです)。次に、スライダーの実際の値ではなく、前述の値のみを送信します。

ここに画像の説明を入力

イベントのコードは次のとおりです。

public void ChangeWindDirection(float value)
{
    Debug.Log("New wind direction: " + value);
}

Unity と Visual Studio 2013 の両方を再起動しようとしましたが、役に立ちませんでした。今では、私が作成しようとするすべての新しいイベントに値を持つボックスを配置しています.

4

4 に答える 4

1

ScrollRectUnity の UI システムから「動的変数」 (つまりのscrollPosition変数またはの値)を渡したい場合はSlider、値の型に一致するメソッドまたはプロパティをターゲット スクリプトで作成するだけです。

たとえば、ターゲット スクリプトに「動的に」ScrollRect送信できるためVector2、ターゲット スクリプトでは、次のようなメソッドを記述します。

public [any return type] MyMethod(Vector2 myDynamicVar) {}

または、次のようなプロパティ:

public Vector2 myDynamicVar {set; [optional get;]}

これには、あいまいですが重要な意味がいくつかあります。

  1. 上記のメソッドとプロパティは、その UI コンポーネントの「動的変数タイプ」が一致しない場合 (この場合Vector2ScrollRect)、他の UI コンポーネントのイベント コールバック リストに「動的」として表示されません。

  2. メソッドのシグネチャは、動的変数の型である必要があります。つまりpublic void MyMethod(Vector2 myDynamicVar, bool isCantBeHere) {}、コンポーネントのイベント コールバック リストに「動的」として表示されません。

何も省略していないことを願っています。これは十分に文書化されていない (または見つけやすい) ものではありません。お役に立てば幸いです。

于 2015-12-21T06:37:51.117 に答える
0

これとまったく同じ問題がありました。古いスライダーは問題なくバインドされていましたが、新しいスライダーは値を入力するプレースホルダーを示していました。以前のスライダーでさえ、それらに触れてまったく同じ方法に変更すると、値のプレースホルダーが表示され、常にゼロが送信されました。ちょうど 1 時間前にスライダーを追加しても問題ありませんでしたが、現在は OnChanged スライダーを変更すると、プレースホルダーの値が表示されます。その時点で静的フィールドをターゲットクラスに追加しましたが、それが原因かどうかはわかりません。

于 2015-12-31T07:54:28.630 に答える