Slider Unity3D水平滑块的问题

Slider Unity3D水平滑块的问题,slider,unity3d,Slider,Unity3d,我对编程/Unity非常陌生,并试图找出如何使用OnGUI水平滑块。 我有三个滑块,范围为0-100,当用户移动滑块时,希望名为pointsLeft的值增加/减少。另外,三个滑块的总值不能超过100。如果有人能帮助一个新手,我将不胜感激!有关更多详细信息,请参见代码 using UnityEngine; using System.Collections; public class Slider : MonoBehaviour { public float sliderA = 0.0f; pu

我对编程/Unity非常陌生,并试图找出如何使用OnGUI水平滑块。 我有三个滑块,范围为0-100,当用户移动滑块时,希望名为pointsLeft的值增加/减少。另外,三个滑块的总值不能超过100。如果有人能帮助一个新手,我将不胜感激!有关更多详细信息,请参见代码

using UnityEngine;
using System.Collections;

public class Slider : MonoBehaviour {

public float sliderA = 0.0f;
public float sliderB = 0.0f;
public float sliderC = 0.0f;

public float startingPoints = 100f;
public float pointsLeft;

void Start() {

pointsLeft = startingPoints;

}

void OnGUI () {

GUI.Label(new Rect(250, 10, 100, 25), "Points Left: " + pointsLeft.ToString());

GUI.Label (new Rect (25, 25, 100, 30), "Strength: " + sliderA.ToString());
sliderA = GUI.HorizontalSlider (new Rect (25, 50, 500, 30), (int)sliderA, 0.0f, 100.0f);

GUI.Label (new Rect (25, 75, 100, 30), "Agility: " + sliderB.ToString());
sliderB = GUI.HorizontalSlider (new Rect (25, 100, 500, 30), (int)sliderB, 0.0f, 100.0f);

GUI.Label (new Rect (25, 125, 100, 30), "Intelligence: " + sliderC.ToString());
sliderC = GUI.HorizontalSlider (new Rect (25, 150, 500, 30), (int)sliderC, 0.0f, 100.0f);

/*if(sliderA < pointsLeft) {
pointsLeft = (int)pointsLeft - sliderA; //this is not doing the magic

}

*/
//decrease pointsLeft when the slider increases or increase pointsLeft if slider decreases

//store the value from each slider when all points are spent and the user pressess a button

}
使用UnityEngine;
使用系统集合;
公共类滑块:单一行为{
公共浮动滑块=0.0f;
公共浮动滑块B=0.0f;
公共浮动滑块c=0.0f;
公共浮动启动点=100f;
公共浮点数;
void Start(){
pointsLeft=起始点;
}
void OnGUI(){
Label(新的Rect(250,10100,25),“Points Left:”+pointsLeft.ToString());
标签(新的Rect(25,25,100,30),“强度:”+sliderA.ToString());
sliderA=GUI.horizontalslaider(新的Rect(25,50,500,30),(int)sliderA,0.0f,100.0f);
Label(新的Rect(25,75,100,30),“Agility:+sliderB.ToString());
sliderB=GUI.horizontalslaider(新的矩形(25100500,30),(整数)sliderB,0.0f,100.0f);
Label(新的Rect(2512510030),“Intelligence:+sliderC.ToString());
sliderC=GUI.HorizontalSlider(新的矩形(25150500,30),(整数)sliderC,0.0f,100.0f);
/*如果(sliderA

}

在确定滑块移动有效之前,不要更新滑块值

下面,此代码将新滑块值存储在临时变量中,如果该值低于允许的点,则允许更改:

public float pointsMax = 100.0f;
public float sliderMax = 100.0f;
public float pointsLeft;

void OnGUI () {

  // allow sliders to update based on user interaction
  float newSliderA = GUI.HorizontalSlider(... (int)sliderA, 0.0f, sliderMax);
  float newSliderB = GUI.HorizontalSlider(... (int)sliderB, 0.0f, sliderMax);
  float newSliderC = GUI.HorizontalSlider(... (int)sliderC, 0.0f, sliderMax);

  // only change the sliders if we have points left
  if ((newSliderA + newSliderB + newSliderC) < pointsMax) {

    // Update the current values for the sliders to use next time
    sliderA = newSliderA;
    sliderB = newSliderB;
    sliderC = newSliderC;
  }

  // record the new points count
  pointsLeft = pointsMax - (sliderA + sliderB + sliderC);
}
公共浮点数max=100.0f;
公共浮动滑块最大值=100.0f;
公共浮点数;
void OnGUI(){
//允许滑块根据用户交互进行更新
float newSliderA=GUI.HorizontalSlider(…(int)sliderA,0.0f,sliderMax);
float newSliderB=GUI.HorizontalSlider(…(int)sliderB,0.0f,sliderMax);
float newSliderC=GUI.HorizontalSlider(…(int)sliderC,0.0f,sliderMax);
//只有在剩下点的情况下才能更改滑块
if((newSliderA+newSliderB+newSliderC)
谢谢,这解决了我的问题!必须使用(int)Mathf.Round(newSliderA)键入浮点,因为当移动多个滑块时,我无法将指针left降到零