如何设置UI_Knob的初始值?

时间:2017-04-07 12:05:16

标签: c# user-interface unity3d

我正在尝试为UI.Extensions UI_Knob设置初始值 请参阅UI.Extensions repo UI.Extensions bitbutcket

的链接

通过一些搜索,我发现设置初始值的最佳方法是使用模拟的pointerEventData并使用ExecuteEvents将其传递给脚本,因为UI_Knob脚本使用鼠标位置来设置它的值。 / p>

- 以下是UI_Knob的代码 -

///信用Tomasz Schelenz ///来自 - https://bitbucket.org/ddreaper/unity-ui-

<div class="menu zoom">
  Click me
  <div class="dropdown">
    <ul>
      <li>Item 1</li>
      <li>Item 2</li>
      <li>Item 3</li>
    </ul>
  </div>
</div>

}

1 个答案:

答案 0 :(得分:0)

我在不使用模拟鼠标数据的情况下回答了我自己的问题。相反,我使用MyStartingAngle()方法添加了一个Start()方法。见下文。我切断了UI_Knob的旋转/设置值方法,基本上只是注入了我自己的角度。如果有人愿意,我仍然想知道如何使用模拟鼠标数据执行此操作。我也很感激我的解决方案的任何输入。感谢您的阅读!!

// ADD THIS INTO UI_Knob script below initialization.
// I added this here to allow for setting an initial rotation/value.

    void Start(){
        float myFirstAngle = 180f;
        MyStartingAngle (myFirstAngle);
    }

    void MyStartingAngle(float angle){

        _initRotation = transform.rotation;

        Quaternion addRotation = Quaternion.AngleAxis(angle, this.transform.forward);
        addRotation.eulerAngles = new Vector3(0, 0, addRotation.eulerAngles.z);

        Quaternion finalRotation = _initRotation * addRotation;


        knobValue = 1 - (finalRotation.eulerAngles.z / 360f);

        transform.rotation = finalRotation;
        InvokeEvents(knobValue + _currentLoops);

        _previousValue = knobValue;

    }