Объявление
public static float Clamp(float value, float min, float max);Параметры
value | Значение с плавающей запятой, которое следует ограничить диапазоном, определяемым минимальным и максимальным значениями. |
min | Минимальное значение с плавающей запятой для сравнения. |
max | Максимальное значение с плавающей запятой для сравнения. |
Возвращает
float Результат с плавающей запятой между минимальным и максимальным значениями.
Описание
Зажимает заданное значение между заданным минимальным значением float и максимальным значением float. Возвращает заданное значение, если оно находится в пределах минимального и максимального диапазона.
Возвращает минимальное значение, если заданное значение с плавающей запятой меньше минимального. Возвращает максимальное значение, если заданное значение больше максимального значения. Используйте Clamp, чтобы ограничить значение диапазоном, который определяется минимальным и максимальным значениями.
Примечание. Если минимальное значение больше максимального, метод возвращает минимальное значение.
using UnityEngine;
// Пример Mathf.Clamp.
//
// Анимация куба по оси X с использованием синусоидальной волны.
// Пусть минимальное и максимальное положение на оси X
// быть изменен. Куб будет виден внутри
// минимальное и максимальное значения.
public class ExampleScript : MonoBehaviour
{
private float xMin = -0.5f, xMax = 0.5f;
private float timeValue = 0.0f;
void Update()
{
// Compute the sin position.
float xValue = Mathf.Sin(timeValue * 5.0f);
// Now compute the Clamp value.
float xPos = Mathf.Clamp(xValue, xMin, xMax);
// Update the position of the cube.
transform.position = new Vector3(xPos, 0.0f, 0.0f);
// Increase animation time.
timeValue = timeValue + Time.deltaTime;
// Reset the animation time if it is greater than the planned time.
if (xValue > Mathf.PI * 2.0f)
{
timeValue = 0.0f;
}
}
void OnGUI()
{
// Let the minimum and maximum values be changed
xMin = GUI.HorizontalSlider(new Rect(25, 25, 100, 30), xMin, -1.0f, +1.0f);
xMax = GUI.HorizontalSlider(new Rect(25, 60, 100, 30), xMax, -1.0f, +1.0f);
// xMin is kept less-than or equal to xMax.
if (xMin > xMax)
{
xMin = xMax;
}
// Display the xMin and xMax value with better size labels.
GUIStyle fontSize = new GUIStyle(GUI.skin.GetStyle("label"));
fontSize.fontSize = 24;
GUI.Label(new Rect(135, 10, 150, 30), "xMin: " + xMin.ToString("f2"), fontSize);
GUI.Label(new Rect(135, 45, 150, 30), "xMax: " + xMax.ToString("f2"), fontSize);
}
}
Объявление
public static int Clamp(int value, int min, int max);Параметры
value | Целочисленное значение точки для ограничения в пределах диапазона от минимума до максимума. |
min | Минимальное целочисленное значение точки для сравнения. |
max | Максимальное целочисленное значение точки для сравнения. |
Возвращает
int Результат int между минимальным и максимальным значениями.
Описание
Зажимает заданное значение между диапазоном, заданным заданным минимальным целым числом и максимальным целым числом. Возвращает заданное значение, если оно находится в пределах минимального и максимального значений.
Возвращает минимальное значение, если заданное значение меньше минимального значения. Возвращает максимальное значение, если заданное значение больше максимального значения. Параметры min и max включены. Например, Clamp(10, 0, 5) вернет максимальный аргумент 5, а не 4.
using UnityEngine;
// Mathf.Clamp целочисленный пример.
//
// Добавляем или вычитаем значения из здоровья.
// Поддерживать здоровье от 1 до 100. Начать с 17.
public class ExampleScript : MonoBehaviour
{
public int health = 17;
private int[] healthUp = new int[] {25, 10, 5, 1};
private int[] healthDown = new int[] {-10, -5, -2, -1};
// Width and height for the buttons.
private int xButton = 75;
private int yButton = 50;
// Place of the top left button.
private int xPos1 = 50, yPos1 = 100;
private int xPos2 = 125, yPos2 = 100;
void OnGUI()
{
GUI.skin.label.fontSize = 20;
GUI.skin.button.fontSize = 20;
// Generate and show positive buttons.
for (int i = 0; i < healthUp.Length; i++)
{
if (GUI.Button(new Rect(xPos1, yPos1 + i * yButton, xButton, yButton), healthUp[i].ToString()))
{
health += healthUp[i];
}
}
// Generate and show negative buttons.
for (int i = 0; i < healthDown.Length; i++)
{
if (GUI.Button(new Rect(xPos2, yPos2 + i * yButton, xButton, yButton), healthDown[i].ToString()))
{
health += healthDown[i];
}
}
// Show health between 1 and 100.
health = Mathf.Clamp(health, 1, 100);
GUI.Label(new Rect(xPos1, xPos1, 2 * xButton, yButton), "Health: " + health.ToString("D3"));
}
}