はじめに
「unity-utils」を Unity プロジェクトに導入することで
便利な関数や拡張メソッドを使用できるようになります
使用例
RandomUtil
using Assets.Scripts.Utils; using System.Collections.Generic; using UnityEngine; public class Example : MonoBehaviour { private enum Direction { Left, Right, Up, Down } public class Card { } private void Awake() { // ランダムな bool 値を返す var randomBool = RandomUtil.NextBool(); // 指定された要素からランダムに要素を返す var randomPerson = RandomUtil.Next( "me", "you" ); // 配列からランダムに要素を返す var intArray = new[] { 1, 3, 5, 7, 9 }; var randomInt = RandomUtil.NextItem( intArray ); // リストからランダムに要素を返す var list = new List<int> { 1, 3, 5, 7, 9 }; randomInt = RandomUtil.NextItem( list ); // ランダムに列挙型の要素を返す var randomDirection = RandomUtil.NextEnum<Direction>(); // 重みにもとづいて要素のインデックスをランダムに返す var weights = new int[] { 10, 10, 30, 50 }; var randomIndex = RandomUtil.NextWeightedInd( weights ); // 指定された個数ランダムに要素を返す var deckCards = new List<Card> { }; var handCards = RandomUtil.Take( deckCards, 6 ); // リストをシャッフルする list = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; RandomUtil.Shuffle( list ); // 配列をシャッフルする var array = new float[] { 1.1f, 1.2f, 1.3f, 1.5f, 1.6f }; RandomUtil.Shuffle( array ); // ランダムな1点を返す var point1 = new Vector2( 123f, 321f ); var point2 = new Vector2( 0f, 0f ); var randomPoint2 = RandomUtil.NextPointOnLine( point1, point2 ); // ランダムな1点を返す var point3 = new Vector3( 123f, 321f, 213f ); var point4 = new Vector3( 0f, 0f, 0f ); var randomPoint3 = RandomUtil.NextPointOnLine( point3, point4 ); // 0 から 100 までの確率で成功したかどうかを返す var percentage = 25; var isSuccess = RandomUtil.GetChance( percentage ); // 0 .0から 1.0 までの確率で成功したかどうかを返す var probability = 0.25f; isSuccess = RandomUtil.GetChance( probability ); } }
RectTransform の拡張メソッド
using Assets.Scripts.Utils; using UnityEngine; public class Example : MonoBehaviour { private void Awake() { var rectTransform = GetComponent<RectTransform>(); // offsetMin や offsetMax を設定 rectTransform.SetLeft( 0 ); rectTransform.SetRight( 0 ); rectTransform.SetTop( 0 ); rectTransform.SetBottom( 0 ); rectTransform.SetLeftTopRightBottom( 0, 0, 0, 0 ); // anchoredPosition や sizeDelta を設定 rectTransform.SetPosX( 0 ); rectTransform.SetPosY( 0 ); rectTransform.SetPosXY( 0, 0 ); rectTransform.SetWidth( 0 ); rectTransform.SetHeight( 0 ); rectTransform.SetWidthHeight( 0, 0 ); rectTransform.SetPosAndSize( 0, 0, 0, 0 ); var pos = Vector3.zero; // 位置を取得 pos = rectTransform.GetWorldCenter(); pos = rectTransform.GetWorldTopLeft(); pos = rectTransform.GetWorldTopRight(); pos = rectTransform.GetWorldBottomLeft(); pos = rectTransform.GetWorldBottomRight(); pos = new Vector2( rectTransform.GetWorldLeft(), rectTransform.GetWorldTop() ); pos = new Vector2( rectTransform.GetWorldRight(), rectTransform.GetWorldBottom() ); } }