RangeInteger
通用的介绍见: K维立方体
RangeInteger表示两个整数之间的范围,实现了IKCube<int>。
比如new RangeInteger(2, 5)表示2,3,4,5也就是区间[2, 5]内的整数。
注意
RangeInteger同时也是一个一维的球体,实现了IKSphere<int, int>。
示例
下面示例展示了RangeInteger最最基本的用法:
https://github.com/VMware233/VMFramework/blob/3b3851401db5d97b9954887bd089af57e3290eb6/Assets/Examples/Core/KSet/RangeIntegerDemo.cs
using UnityEngine;
using VMFramework.Core;
namespace VMFramework.Examples
{
public sealed class RangeIntegerDemo : MonoBehaviour
{
private void Start()
{
// å建ä¸ä¸ª[0, 2]çæ´æ°èå´ï¼ç¨é¿åº¦åå§å
// Create a range of integers from 0 to 2, with length initialization
var a = new RangeInteger(3);
// å建ä¸ä¸ª[3, 7]çæ´æ°èå´ï¼ç¨Vector2Intçxåyåå«ä½ä¸ºæå°å¼åæå¤§å¼åå§å
// Create a range of integers from 3 to 7, with Vector2Int's x and y as minimum and maximum values
var b = new RangeInteger(new Vector2Int(3, 7));
// ä»bå¤å¶ä¸ä¸ªæ´æ°èå´
// Copy a range of integers from b
var c = new RangeInteger(b);
// ç¨RangeInteger.unitå¿«éå建ä¸ä¸ª[0, 1]çæ´æ°èå´
// Create a range of integers from 0 to 1, with RangeInteger.unit
var d = RangeInteger.unit;
// ä¸3ç¸å ï¼å¾å°ä¸ä¸ª[3, 4]çæ´æ°èå´
// Add 3 to a range of integers, resulting in a range of integers from 3 to 4
var e = d + 3;
// ä¸3ç¸ä¹ï¼å¾å°ä¸ä¸ª[0, 3]çæ´æ°èå´
// Multiply a range of integers by 3, resulting in a range of integers from 0 to 3
var f = d * 3;
// å建ä¸ä¸ª[3, 7]çæ´æ°èå´ï¼ç¨æå°å¼åæå¤§å¼åå§å
// Create a range of integers from 3 to 7, with minimum and maximum values
var rangeInt = new RangeInteger(3, 7);
// è·å[3, 7]å
ç5ä¸ªéæºæ´æ°
// Get 5 random integers within the range of [3, 7]
foreach (var point in rangeInt.GetRandomPoints(5))
{
Debug.Log(point);
}
// è·å[3, 7]å
ç5个ä¸åçéæºæ´æ°
// Get 5 unique random integers within the range of [3, 7]
foreach (var point in rangeInt.GetRandomUniquePoints(5))
{
Debug.Log(point);
}
// è·å[3, 7]å
çæææ´æ°
// Get all integers within the range of [3, 7]
foreach (var point in rangeInt.GetAllPoints())
{
Debug.Log(point);
}
var num = 2;
// 夿2æ¯å¦å¨[3, 7]å
// Check if 2 is within the range of [3, 7]
if (rangeInt.Contains(num))
{
Debug.Log($"{num}å¨{rangeInt}å
");
}
else
{
Debug.Log($"{num}ä¸å¨{rangeInt}å
");
}
// è·å2ç¸å¯¹äº[3, 7]çä½ç½®ï¼æ¤å¤è¾åº-1
// Get the position of 2 relative to [3, 7], which outputs -1
var relativeNum = rangeInt.GetRelativePos(num);
// ç¡®ä¿2æ¯[3, 7]çæå°å¼å¤§ï¼æ¤å¤è¾åº3
// Ensure that 2 is greater than the minimum value of [3, 7], which outputs 3
var clampedMinNum = rangeInt.ClampMin(num);
// ç¡®ä¿2æ¯[3, 7]çæå¤§å¼å°ï¼æ¤å¤è¾åº2
// Ensure that 2 is less than the maximum value of [3, 7], which outputs 2
var clampedMaxNum = rangeInt.ClampMax(num);
// è·å[3, 7]çä¸å¿ç¹ï¼æ¤å¤è¾åº5
// Get the center point of [3, 7], which outputs 5
var pivot = rangeInt.pivot;
}
}
}
最后更新于
这有帮助吗?