Files
Main/Assets/GameAssets/Resources/GameUI/Common/Utils/LuaUnityUtility.cs

286 lines
7.5 KiB
C#
Raw Normal View History

2025-01-25 04:38:09 +08:00
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;
}
}