286 lines
7.5 KiB
C#
286 lines
7.5 KiB
C#
|
using Thousandto.Core.Base;
|
|||
|
using System;
|
|||
|
using UnityEngine;
|
|||
|
using Thousandto.Plugins.LuaType;
|
|||
|
using UnityEngine.Gonbest.MagicCube;
|
|||
|
|
|||
|
public class LuaUnityUtility {
|
|||
|
|
|||
|
//设置父物体
|
|||
|
public static void SetParent(Transform child, Transform parent)
|
|||
|
{
|
|||
|
child.SetParent(parent);
|
|||
|
}
|
|||
|
|
|||
|
//设置父物体并重置Transform
|
|||
|
public static void SetParentAndReset(Transform child, Transform parent)
|
|||
|
{
|
|||
|
child.SetParent(parent);
|
|||
|
ResetTransform(child);
|
|||
|
}
|
|||
|
|
|||
|
//重置Transform
|
|||
|
public static void ResetTransform(Transform trans)
|
|||
|
{
|
|||
|
trans.localPosition = Vector3.zero;
|
|||
|
trans.localEulerAngles = Vector3.zero;
|
|||
|
trans.localScale = Vector3.one;
|
|||
|
}
|
|||
|
//增加 LuaBehaviour 组件
|
|||
|
public static LuaBehaviour RequireLuaBehaviour(Transform tf)
|
|||
|
{
|
|||
|
var _componet = tf.GetComponent<LuaBehaviour>();
|
|||
|
if (_componet == null)
|
|||
|
{
|
|||
|
return tf.gameObject.AddComponent<LuaBehaviour>();
|
|||
|
}
|
|||
|
return _componet;
|
|||
|
}
|
|||
|
//根据类型名增加组件(strType:空间名+类名)
|
|||
|
public static object RequireComponent(Transform tf, string strType)
|
|||
|
{
|
|||
|
var type = AssemblyUtils.FindType(strType);
|
|||
|
if (type != null)
|
|||
|
{
|
|||
|
var _componet = tf.GetComponent(type);
|
|||
|
if (_componet == null)
|
|||
|
{
|
|||
|
return tf.gameObject.AddComponent(type);
|
|||
|
}
|
|||
|
return _componet;
|
|||
|
}
|
|||
|
return null;
|
|||
|
}
|
|||
|
//获取子节点的第一个组件
|
|||
|
public static object GetComponentInChildren( Transform tf, string strType ) {
|
|||
|
return tf.GetComponentInChildren(AssemblyUtils.FindType(strType));
|
|||
|
}
|
|||
|
public static bool USE_NEW_CFG()
|
|||
|
{
|
|||
|
#if USE_NEW_CFG
|
|||
|
return true;
|
|||
|
#else
|
|||
|
return false;
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
public static bool UNITY_EDITOR()
|
|||
|
{
|
|||
|
#if UNITY_EDITOR
|
|||
|
return true;
|
|||
|
#else
|
|||
|
return false;
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
public static bool UNITY_IOS()
|
|||
|
{
|
|||
|
#if UNITY_IOS
|
|||
|
return true;
|
|||
|
#else
|
|||
|
return false;
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
public static bool UNITY_ANDROID()
|
|||
|
{
|
|||
|
#if UNITY_ANDROID
|
|||
|
return true;
|
|||
|
#else
|
|||
|
return false;
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
public static bool UNITY_WINDOWS()
|
|||
|
{
|
|||
|
#if UNITY_STANDALONE_WIN
|
|||
|
return true;
|
|||
|
#else
|
|||
|
return false;
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
public static bool UNITY_LAUNCHER()
|
|||
|
{
|
|||
|
#if FUNCELL_LAUNCHER
|
|||
|
return true;
|
|||
|
#else
|
|||
|
return false;
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
//是否使用KeyCode
|
|||
|
public static bool IsUseKeyCode()
|
|||
|
{
|
|||
|
#if USEKEYCODE
|
|||
|
return true;
|
|||
|
#else
|
|||
|
return false;
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
//是否使用pc模式
|
|||
|
public static bool IsUseUsePCMOdel()
|
|||
|
{
|
|||
|
#if USE_PC_MODEL
|
|||
|
return true;
|
|||
|
#else
|
|||
|
return false;
|
|||
|
#endif
|
|||
|
}
|
|||
|
|
|||
|
//获取子节点的components
|
|||
|
public static object GetComponentsInChildren( Transform tf, string compType, bool unityEngine = false )
|
|||
|
{
|
|||
|
Type type = Type.GetType( compType );
|
|||
|
if( unityEngine )
|
|||
|
{
|
|||
|
var assembly = System.Reflection.Assembly.Load( "UnityEngine" );
|
|||
|
if( assembly != null )
|
|||
|
{
|
|||
|
type = assembly.GetType( compType );
|
|||
|
}
|
|||
|
}
|
|||
|
return tf.GetComponentsInChildren( type );
|
|||
|
}
|
|||
|
|
|||
|
//获取类型
|
|||
|
public static string GetType(object obj)
|
|||
|
{
|
|||
|
return obj.GetType().ToString();
|
|||
|
}
|
|||
|
//object类型转int类型,枚举类型转int可以用此函数
|
|||
|
public static int GetObjct2Int(object obj)
|
|||
|
{
|
|||
|
return (int)obj;
|
|||
|
}
|
|||
|
//object类型转int类型,枚举类型转byte可以用此函数
|
|||
|
public static byte GetObjct2Byte(object obj)
|
|||
|
{
|
|||
|
return (byte)obj;
|
|||
|
}
|
|||
|
//设置Transform的localPosition
|
|||
|
public static void SetLocalPosition(Transform t, float x, float y, float z)
|
|||
|
{
|
|||
|
t.localPosition = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
|
|||
|
//设置Transform的localPosition.x
|
|||
|
public static void SetLocalPositionX(Transform t, float x)
|
|||
|
{
|
|||
|
t.localPosition = new Vector3(x, t.localPosition.y, t.localPosition.z);
|
|||
|
}
|
|||
|
|
|||
|
//设置Transform的localPosition.y
|
|||
|
public static void SetLocalPositionY(Transform t, float y)
|
|||
|
{
|
|||
|
t.localPosition = new Vector3(t.localPosition.x, y, t.localPosition.z);
|
|||
|
}
|
|||
|
|
|||
|
//设置Transform的localPosition.z
|
|||
|
public static void SetLocalPositionZ(Transform t, float z)
|
|||
|
{
|
|||
|
t.localPosition = new Vector3(t.localPosition.x, t.localPosition.y, z);
|
|||
|
}
|
|||
|
|
|||
|
//设置Transform的LocalRotation
|
|||
|
public static void SetLocalRotation(Transform t, float x, float y, float z, float w)
|
|||
|
{
|
|||
|
t.localRotation = new Quaternion(x, y, z, w);
|
|||
|
}
|
|||
|
//设置Transform的LocalEulerAngles
|
|||
|
public static void SetLocalEulerAngles(Transform t, float x, float y, float z)
|
|||
|
{
|
|||
|
t.localEulerAngles = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
//设置Transform的localScale
|
|||
|
public static void SetLocalScale(Transform t, float x, float y, float z)
|
|||
|
{
|
|||
|
if (t == null)
|
|||
|
return;
|
|||
|
t.localScale = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
//设置Transform的position
|
|||
|
public static void SetPosition(Transform t, float x, float y, float z)
|
|||
|
{
|
|||
|
t.position = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
//设置Transform的rotation
|
|||
|
public static void SetRotation(Transform t, float x, float y, float z, float w)
|
|||
|
{
|
|||
|
t.rotation = new Quaternion(x, y, z, w);
|
|||
|
}
|
|||
|
|
|||
|
//设置Transform的AulerAngles
|
|||
|
public static void SetAulerAngles(Transform t, float x, float y, float z)
|
|||
|
{
|
|||
|
t.eulerAngles = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
//设置Transform的forward
|
|||
|
public static void SetForward(Transform t, float x, float y, float z)
|
|||
|
{
|
|||
|
t.forward = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
//设置Transform的up
|
|||
|
public static void SetUp(Transform t, float x, float y, float z)
|
|||
|
{
|
|||
|
t.up = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
//设置Transform的right
|
|||
|
public static void SetRight(Transform t, float x, float y, float z)
|
|||
|
{
|
|||
|
t.right = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
|
|||
|
//设置TweenPosition的from
|
|||
|
public static void SetTweenPositionFrom(TweenPosition t, float x, float y, float z)
|
|||
|
{
|
|||
|
t.from = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
|
|||
|
//设置TweenPosition的to
|
|||
|
public static void SetTweenPositionTo(TweenPosition t, float x, float y, float z)
|
|||
|
{
|
|||
|
t.to = new Vector3(x, y, z);
|
|||
|
}
|
|||
|
|
|||
|
// 调用UIScrollView.ResetPosition()
|
|||
|
public static void ScrollResetPosition( Transform trans )
|
|||
|
{
|
|||
|
trans.GetComponent<UIScrollView>().ResetPosition();
|
|||
|
}
|
|||
|
|
|||
|
// 调用UIGrid.Reposition()
|
|||
|
public static void GridResetPosition( Transform trans )
|
|||
|
{
|
|||
|
trans.GetComponent<UIGrid>().Reposition();
|
|||
|
}
|
|||
|
|
|||
|
//设置层
|
|||
|
public static void SetLayer(Transform trans, int layer, bool recursive = true)
|
|||
|
{
|
|||
|
UnityUtils.SetLayer(trans, layer, recursive);
|
|||
|
}
|
|||
|
|
|||
|
// 获得目标位置到UICamera显示位置
|
|||
|
public static Vector3 WorldPosToHudPos(Camera mainCamera, Camera uiCamera, Vector3 worldPos)
|
|||
|
{
|
|||
|
Vector3 hudPos = new Vector3(-Screen.width * 100.0f, -Screen.height * 100.0f, 0.0f);
|
|||
|
if (mainCamera == null || uiCamera == null)
|
|||
|
{
|
|||
|
return hudPos;
|
|||
|
}
|
|||
|
Vector3 viewportPos = mainCamera.WorldToViewportPoint(worldPos);
|
|||
|
if (viewportPos.x >= 0 && viewportPos.x <= 1
|
|||
|
&& viewportPos.y >= 0 && viewportPos.y <= 1
|
|||
|
&& viewportPos.z > mainCamera.nearClipPlane)
|
|||
|
{
|
|||
|
Vector3 tempPos = uiCamera.ViewportToWorldPoint(viewportPos);
|
|||
|
hudPos.x = tempPos.x;
|
|||
|
hudPos.y = tempPos.y;
|
|||
|
hudPos.z = 0.0f;
|
|||
|
}
|
|||
|
return hudPos;
|
|||
|
}
|
|||
|
}
|