Skip to content
mizutanikirin edited this page Oct 6, 2023 · 8 revisions

概要

Utilを使うと計算を簡略化や位置の変更などする関数が使えます。

使い方

KirinUtilが導入されていない場合導入作業をしてください。

例:BasicSetting(bool _cursor)を使う場合

private void Start(){
  Util.BasicSetting(false);
}

関数一覧

void BasicSetting(bool _cursor)

アプリの基本的な設定ができます。

  _cursor:
    [True] 常にカーソルを表示させます。  
    [False] マウスが動いていないときはカーソルを非表示にします。

void BasicSetting(Vector2 screenSize, bool fullscreen, int targetFps, bool _cursor)

アプリの基本的な設定ができます。

  screenSize:
    アプリの大きさを設定できます。

  fullscreen: 
    [True] フルスクリーンでアプリを表示
    [False] screenSizeで指定したサイズでアプリを表示

  targetFps:
    アプリのFPS(preferredRefreshRate)を設定できます。

  _cursor: 
    [True] 常にカーソルを表示させます。
    [False] マウスが動いていないときはカーソルを非表示にします。

int[] ShuffleArray(int[] arr)

int型の配列をランダムに並び替えてint[]で返します。

float[] ShuffleArray(float[] arr)

float型の配列をランダムに並び替えてfloat[]で返します。

string[] ShuffleArray(string[] arr)

string型の配列をランダムに並び替えてstring[]で返します。

Vector3[] ShuffleArray(Vector3[] arr)

Vector3型の配列をランダムに並び替えてVector3[]で返します。

bool DayArea(string _startDate, string _endDate)

現在の日が指定された期間(_startDateから_endDate)に入っているかどうか判別しboolで返します。 ※_startDate、_endDateで指定した日は期間のうちに含まれます。

  _startDate:
    期間の始まり日を指定します。(形式:10/4)

  _endDate: 
    期間の終わり日を指定します。(形式:10/4)
// Example
bool flag = Util.DayArea("4/1", "6/10");

bool TimeArea(string startTime, string nowTime, string endTime)

nowTimeが指定された期間(startTimeからendTime)に入っているかどうか判別しboolで返します。 ※_startDate、_endDateで指定した時分は期間のうちに含まれます。

  startTime:
    期間の始まり時分を指定します。(形式:10:4)

  _endDate: 
    期間の終わり時分を指定します。(形式:10:4)

  _endDate: 
    期間の終わり時分を指定します。(形式:10:4)
// Example
bool flag = Util.DayArea("6:0", "15:4", "19:20"); // True
bool flag = Util.DayArea("6:0", "6:0", "15:4"); // True
bool flag = Util.DayArea("6:0", "15:4", "15:4"); // True
bool flag = Util.DayArea("6:0", "15:4", "10:0"); // False

bool WeekArea(int _startWeek, int _endWeek)

現在の曜日が指定された期間(_startWeekから_endWeek)に入っているかどうか判別しboolで返します。 ※_startWeek、_endWeekで指定した日は期間のうちに含まれます。

  _startWeek:
    期間の始まり曜日(int)を指定します。

  _endWeek: 
    期間の終わり曜日(int)を指定します。
    
  指定する曜日番号: 
    0: Sunday
    1: Monday
    2: Tuesday
    3: Wednesday
    4: Thursday
    5: Friday
    6: Saturday
// Example
bool flag = Util.DayArea(0, 6);

float Angle2(Vector2 p1, Vector2 p2)

指定した位置2点間の角度を返します。

float Angle3(Vector2 p0, Vector2 p1, Vector2 p2)

指定した位置3点を結んだ線の角度を返します。

float To360Angle(float angle)

引数で指定した角度を0~360度になるように返します。

// Example
float angle1 = Util.To360Angle(-180);  // 180
float angle2 = Util.To360Angle(640);  // 280

float Deg2Rad(float degAngle)

度からラジアンに変換してfloatで返します。

float Deg2Rad(float degAngle)

ラジアンから度に変換してfloatで返します。

string AddZero(int num, int digits)

指定した桁数にしてstringで返します。

// Example
string num1 = Util.AddZero(1, 3);   // 001
string num2 = Util.AddZero(10, 3);  // 010

string PointAlignment(float num, int pointNum)

小数点の桁数を揃えます。 ※numが整数だった場合numを返します。 ※四捨五入で桁数を揃えます。

// Example
string num1 = Util.PointAlignment(0.1f, 3);     // 0.100
string num2 = Util.PointAlignment(0.1234f, 3);  // 0.123
string num3 = Util.PointAlignment(0.05f, 1);    // 0.1

float PointRound(float num, int pointNum)

指定した小数点何位を四捨五入します。 ※numが整数だった場合numを返します。

// Example
float num1 = Util.PointRound(0.1f, 3);     // 0.1
float num2 = Util.PointRound(0.1234f, 3);  // 0.123
float num3 = Util.PointRound(0.05f, 1);    // 0.1

int FrameRateUpdate(float calcSpanTime = 1, Text fpsText = null)

フレームレートが返ってきます。UGUIのTextを第2引数に指定するとTextで表示もできます。 ※Update()にて使用してください。

  calcSpanTime:
    フレームレートを計算する間隔(秒)

  fpsText:
    表示するUGUIのTextを指定します。
// Example
void Update(){
  Util.FrameRateUpdate(float calcSpanTime = 1, Text fpsText = null);
}

string GetRandomString(int length)

指定した文字数のランダムな英数字を返します。

// Example
string randomStr = Util.GetRandomString(5);  // gQTd1

int CountOf(string message, string[] strArray)

配列内に指定した文字列がいくつ入っているかカウントをし数を返します。

// Example
string[] str = new string[5] { "abc", "def", "akb", "get", "bbb" };
int num = Util.CountOf("ab", str);  // 1

Vector2 GetUIPos(Camera uiCamera, Camera worldCamera, Canvas canvas, GameObject targetObj)

指定したGameObjectのWorld座標をCanvas座標に変換します。 ※Canvas > Render Mode > Screen Space - Cameraに指定したCanvasしか動作確認していません。

  uiCamera:
    変換したいターゲットのCanvasを映しているCameraを指定します。

  worldCamera:
    targetObjを映しているCameraを指定します。

  canvas:
    変換したいターゲットのCanvasを指定します。

  targetObj:
    Canvas座標の位置を知りたいターゲットのGameObjectを指定します。

Vector2 GetUIPos(Camera uiCamera, Camera worldCamera, Canvas canvas, Vector3 targetPos)

指定した位置のWorld座標をCanvas座標に変換します。 ※Canvas > Render Mode > Screen Space - Cameraに指定したCanvasしか動作確認していません。

  uiCamera:
    変換したいターゲットのCanvasを映しているCameraを指定します。

  worldCamera:
    targetObjを映しているCameraを指定します。

  canvas:
    変換したいターゲットのCanvasを指定します。

  targetObj:
    Canvas座標の位置を知りたいターゲットの位置(Vector3)を指定します。

Vector2 GetWorldMousePos(Camera camera, float z)

マウス位置をWorld座標に変換します。

  camera:
    Cameraを指定します。

  z:
    Z軸の位置を指定します。

Vector3 GetWorldPos(Camera camera, Canvas canvas, Vector3 canvasPos, float z)

canvasPosの位置をCanvas座標からWorld座標に変換します。

  camera:
    Cameraを指定します。

  canvas:
    Canvasを指定します。

  canvasPos:
    Z軸の位置を指定します。

  z:
    Z軸の位置を指定します。

void PosX(GameObject obj, float x)

GameObjectのpositionをXのみ変更します。

void PosY(GameObject obj, float y)

GameObjectのpositionをYのみ変更します。

void PosZ(GameObject obj, float z)

GameObjectのpositionをZのみ変更します。

void LocalPosX(GameObject obj, float x)

GameObjectのlocalPositionをXのみ変更します。

void LocalPosY(GameObject obj, float y)

GameObjectのlocalPositionをYのみ変更します。

void LocalPosZ(GameObject obj, float z)

GameObjectのlocalPositionをZのみ変更します。

void Scale(GameObject obj, float scale)

GameObjectのlocalScaleをX,Y,Z全て指定した値にします。

void ScaleX(GameObject obj, float x)

GameObjectのlocalScaleをXのみ変更します。

void ScaleY(GameObject obj, float y)

GameObjectのlocalScaleをYのみ変更します。

void ScaleZ(GameObject obj, float z)

GameObjectのlocalScaleをZのみ変更します。

void RotationX(GameObject obj, float x)

GameObjectのrotationをXのみ変更します。

void RotationY(GameObject obj, float y)

GameObjectのrotationをYのみ変更します。

void RotationZ(GameObject obj, float z)

GameObjectのrotationをZのみ変更します。

void LocalRotationX(GameObject obj, float x)

GameObjectのlocalRotationをXのみ変更します。

void LocalRotationY(GameObject obj, float y)

GameObjectのlocalRotationをYのみ変更します。

void LocalRotationZ(GameObject obj, float z)

GameObjectのlocalRotationをZのみ変更します。

string GetLineText(string str)

string中にある<br>をEnvironment.NewLineにして返します。

// Example
string str = Util.GetLineText("abcd<br>efg");
// abcd
// efg

DebugWatchStart()

デバッグ用StopWatch(コードの処理速度を計るためのもの) ※ DebugWatchStop(Text debugText = null)と対で使ってください。

// Example
private IEnumerator DebugWatch() {
  Util.DebugWatchStart();
  yield return new WaitForSeconds(1.0f);
  Util.DebugWatchStop();  // 1290ms
}

DebugWatchStop(Text debugText = null)

デバッグ用StopWatch(コードの処理速度を計るためのもの) DebugWatchStopするとConsoleに時間が表示されます。引数でTextを指定することもできます。 ※ DebugWatchStart()と対で使ってください。 ※ コードサンプルはDebugWatchStart()の項目を見てください。

int GetMaxListNum(List thisList)

List(float)中の最大の数を探しそのList番号を返します。

int GetMaxListNum(List thisList)

List(int)中の最大の数を探しそのList番号を返します。

int GetMaxListNum(List thisList, AxisType type, bool isLocal)

List(GameObject)中の最大の位置を探しそのList番号を返します。

  thisList:
    比較したいList<GameObject>を指定します。

  type:
    比較したい軸をAxisType型でX, Y, Zで指定します。

  isLocal:
    [True] localPositionで比較したい場合
    [False] positionで比較したい場合
    

int GetMinListNum(List thisList)

List(float)中の最小の数を探しそのList番号を返します。

int GetMinListNum(List thisList)

List(int)中の最小の数を探しそのList番号を返します。

int GetMinListNum(List thisList, AxisType type, bool isLocal)

List(GameObject)中の最小の位置を探しそのList番号を返します。

  thisList:
    比較したいList<GameObject>を指定します。

  type:
    比較したい軸をAxisType型でX, Y, Zで指定します。

  isLocal:
    [True] localPositionで比較したい場合
    [False] positionで比較したい場合
    

float CenterPosX(GameObject obj0, GameObject obj1)

obj0とobj1のX軸の中心座標(position)を返します。

float CenterPosY(GameObject obj0, GameObject obj1)

obj0とobj1のY軸の中心座標(position)を返します。

float CenterPosZ(GameObject obj0, GameObject obj1)

obj0とobj1のZ軸の中心座標(position)を返します。

Vector3 CenterPos(GameObject obj0, GameObject obj1)

obj0とobj1の中心座標(position)を返します。

float CenterLocalPosX(GameObject obj0, GameObject obj1)

obj0とobj1のX軸の中心座標(localPosition)を返します。

float CenterLocalPosY(GameObject obj0, GameObject obj1)

obj0とobj1のY軸の中心座標(localPosition)を返します。

float CenterLocalPosZ(GameObject obj0, GameObject obj1)

obj0とobj1のZ軸の中心座標(localPosition)を返します。

Vector3 CenterLocalPos(GameObject obj0, GameObject obj1)

obj0とobj1の中心座標(localPosition)を返します。

int GetSplitInt(string message, string splitStr, int getNum)

指定した文字列をSplitして指定した配列の値(int)を返します。

// Example
int id = Util.GetSplitInt("0,man,tokyo,20.5,123456", ",", 0); // 0

float GetSplitFloat(string message, string splitStr, int getNum)

指定した文字列をSplitして指定した配列の値(float)を返します。

// Example
float point = Util.GetSplitFloat("0,man,tokyo,20.5,123456", ",", 3); // 20.5

string GetSplitString(string message, string splitStr, int getNum)

指定した文字列をSplitして指定した配列の値(string)を返します。

// Example
string place = Util.GetSplitString("0,man,tokyo,20.5,123456", ",", 2);  // tokyo

long GetSplitLong(string message, string splitStr, int getNum)

指定した文字列をSplitして指定した配列の値(long)を返します。

// Example
long data = Util.GetSplitLong("0,man,tokyo,20.5,123456", ",", 4);  // 123456

int[] GetSplitInt(string message, string splitStr)

指定した文字列をSplitしてint[]にして返します。

float[] GetSplitFloat(string message, string splitStr)

指定した文字列をSplitしてfloat[]にして返します。

long[] GetSplitLong(string message, string splitStr)

指定した文字列をSplitしてlong[]にして返します。

List GetSplitStringList(string str, string separate)

指定した文字列をSplitしてListにして返します。

List GetSplitIntList(string str, string separate)

指定した文字列をSplitしてListにして返します。

List GetSplitFloatList(string str, string separate)

指定した文字列をSplitしてListにして返します。

string GetSeparatedString(List dataList, string separate)

Listを指定した区切り文字で区切った文字列を返します。

// Example
List<string> dataList = new List<string>();
dataList.Add("a");
dataList.Add("b");
dataList.Add("c");

string str = Util.GetSeparatedString(dataList, ",");  // a,b,c

string GetSeparatedString(List dataList, string separate)

Listを指定した区切り文字で区切った文字列を返します。

// Example
List<int> dataList = new List<int>();
dataList.Add(1);
dataList.Add(2);
dataList.Add(3);

string str = Util.GetSeparatedString(dataList, ",");  // 1,2,3

string GetSeparatedString(List dataList, string separate)

Listを指定した区切り文字で区切った文字列を返します。

// Example
List<float> dataList = new List<float>();
dataList.Add(1.1f);
dataList.Add(2.0f);
dataList.Add(3.0f);

string str = Util.GetSeparatedString(dataList, ",");  // 1.1,2,3

List GetOrderList(List idList, List valueList, Direction direction)

idと得点をListで分けて管理しているとき、得点の順を大きい順または小さい順に並び替えたときにそのidも一緒に並び替えをするときに使用する。(主にランキングで使用)

// Example
List<string> idList = new List<string>();
idList.Add("a");
idList.Add("b");
idList.Add("c");

List<float> pointList = new List<float>();
pointList.Add(20);
pointList.Add(10);
pointList.Add(30);

List<OrderData> orders = Util.GetOrderList(idList, pointList, Direction.Up);
for (int i = 0; i < orders.Count; i++) {
  Debug.Log(orders[i].id + ": " + orders[i].value);
}
// c: 30
// a: 20
// b: 10

float Round(float value)

四捨五入してfloatで返します。

// Example
float num1 = Util.Round(0.5f));  // 1.0

float Round(float value)

四捨五入してintで返します。

// Example
float num1 = Util.RoundToInt(0.5f));  // 1

bool MatchWord(List wordList, string matchWord)

検索文字がリストにあるかどうかをboolで返します。 ※検索文字と完全一致しているかどうかを判別します。

// Example
List<string> dataList = new List<string>();
dataList.Add("abc");
dataList.Add("def");
dataList.Add("a");
bool exist1 = Util.MatchWord(dataList, "abc");  // True
bool exist2 = Util.MatchWord(dataList, "ab");  // False

int GetListNum(List idList, string id)

該当id検索してリスト番号を返します。

// Example
List<string> dataList = new List<string>();
dataList.Add("abc");
dataList.Add("def");
dataList.Add("a");
int num = Util.GetListNum(dataList, "def");  // 1

void EquidistantX(List objList, float startX, float endX, float posY)

Listを指定した場所(localPosition)にX軸に等間隔で並べます。 ※ startXとendXの範囲で中央揃えで表示されます。

  objList:
    並べたいList<GameObject>を指定します。

  startX:
    エリアの始まりのX位置を指定します。

  endX:
    エリアの終わりのX位置を指定します。

  posY:
    Y位置を指定します。

void EquidistantX(List objList, float startX, float endX)

Listを指定した場所(localPosition)にX軸に等間隔で並べます。 ※ startXとendXの範囲で中央揃えで表示されます。

  objList:
    並べたいList<GameObject>を指定します。

  startX:
    エリアの始まりのX位置を指定します。

  endX:
    エリアの終わりのX位置を指定します。

void EquidistantY(List objList, float startY, float endY, float posY)

Listを指定した場所(localPosition)にY軸に等間隔で並べます。 ※ startYとendYの範囲で中央揃えで表示されます。

  objList:
    並べたいList<GameObject>を指定します。

  startY:
    エリアの始まりのY位置を指定します。

  endY:
    エリアの終わりのY位置を指定します。

  posY:
    Y位置を指定します。

void EquidistantY(List objList, float startY, float endY)

Listを指定した場所(localPosition)にY軸に等間隔で並べます。 ※ startYとendYの範囲で中央揃えで表示されます。

  objList:
    並べたいList<GameObject>を指定します。

  startY:
    エリアの始まりのY位置を指定します。

  endY:
    エリアの終わりのY位置を指定します。

Vector3 GetPosInFrontOfCamera(Camera camera, float distance, bool yFix, float yPos = 0)

Cameraの前にGameObjectを表示させます。そのGameObjectの位置をVector3で返します。

  camera:
    対象のカメラを指定します。

  distance:
    カメラからの距離を指定します。

  yFix:
    y軸を固定するかどうかを指定します。

  yPos:
    固定するy位置を指定します。(yFixがTrueのときのみ有効)

void SetObjectInFrontOfCamera(Camera camera, GameObject targetObj, float distance, bool yFix, float yPos = 0, bool cameraDirectionOn = true, bool cameraDirectionXFixOn = false)

Cameraの前にGameObjectを表示させます。

  camera:
    対象のカメラを指定します。

  distance:
    カメラからの距離を指定します。

  yFix:
    y軸を固定するかどうかを指定します。

  yPos:
    固定するy位置を指定します。(yFixがTrueのときのみ有効)

  cameraDirectionOn:
    targetObjをカメラの方向に回転させるかどうか。

  cameraDirectionXFixOn:
    cameraDirectionXFixOn = Trueのときxの回転角度は0となります。(cameraDirectionOnがTrueのときのみ有効)

LayoutChange(VerticalLayoutGroup layoutGroup)

VerticalLayoutGroupの更新をします。

  layoutGroup:
    対象のVerticalLayoutGroupを指定します。

LayoutChange(HorizontalLayoutGroup layoutGroup)

HorizontalLayoutGroupの更新をします。

  layoutGroup:
    対象のHorizontalLayoutGroupを指定します。

int TextLengthJPN(string message)

文字列の長さをカウントをします。 ※日本語は2, 英数字は1としてカウントします。

// Example
float num1 = Util.TextLengthJPN("あい1234");  // 8

bool IsJPN(string message)

文字列に日本語が入っているかどうかを返します。

// Example
bool exist = Util.IsJPN("あい1234");  // True

Vector3 GetLinePos(Vector3 nowPos, Vector3 targetPos, float distance)

現在の位置(nowPos)から指定した距離(distance)だけターゲット(targetPos)の方向に移動した位置を返します。

Vector2 GetLinePos(Vector2 nowPos, Vector2 targetPos, float distance)

現在の位置(nowPos)から指定した距離(distance)だけターゲット(targetPos)の方向に移動した位置を返します。

Clone this wiki locally