1650 lines
58 KiB
C#
1650 lines
58 KiB
C#
using System;
|
||
using Thousandto.Core.Base;
|
||
using UnityEngine;
|
||
using Thousandto.Cfg.Data;
|
||
using Thousandto.Core.Asset;
|
||
using Thousandto.Code.Logic;
|
||
using Thousandto.GameUI.Form;
|
||
using UnityEngine.Video;
|
||
using Thousandto.Code.Global;
|
||
using XLua;
|
||
using PathUtils = UnityEngine.Gonbest.MagicCube.PathUtils;
|
||
using CoroutinePool = UnityEngine.Gonbest.MagicCube.CoroutinePool;
|
||
using StringUtils = UnityEngine.Gonbest.MagicCube.StringUtils;
|
||
using UnityEngine.Playables;
|
||
using Thousandto.Code.Center;
|
||
|
||
namespace Thousandto.Plugins.Common
|
||
{
|
||
/// <summary>
|
||
/// UI数据操作简化
|
||
/// </summary>
|
||
public class UIUtility
|
||
{
|
||
|
||
#region 屏幕空间 UI空间 3D空间变换
|
||
// UI坐标变换 -> 获取屏幕 -> (相对于UI Center坐标)
|
||
private static Vector3? GetObjViewPortPosFromUICamera( GameObject uiObj, Camera uiCamera )
|
||
{
|
||
if( uiCamera != null && uiObj != null )
|
||
{
|
||
Vector3 objWorldPos = uiObj.transform.position;
|
||
return uiCamera.WorldToViewportPoint( objWorldPos );
|
||
}
|
||
return null;
|
||
}
|
||
// 屏幕坐标等比于UI相机ViewPort位置 -> 获取目标相机照射空间位置
|
||
private static Vector3? ViewPortPosToTagCameraViewWorldPos( Camera mainCamera, Vector3 viewPortPos, float z = 10.0f )
|
||
{
|
||
if( mainCamera == null )
|
||
{
|
||
return null;
|
||
}
|
||
viewPortPos.z = z;
|
||
Vector3 worldPos = mainCamera.ViewportToWorldPoint( viewPortPos );
|
||
return worldPos;
|
||
}
|
||
// 获取相对Center位置 UI坐标到目标相机世界坐标
|
||
public static bool GetGameObjectPositionFromUICameraToTagCamera( GameObject uiObj, Camera uiCamera, Camera mainCamera,
|
||
ref Vector3 getWorldPos, float zSet = 10.0f )
|
||
{
|
||
bool succ = false;
|
||
Vector3? viewPortPos = GetObjViewPortPosFromUICamera( uiObj, uiCamera );
|
||
if( viewPortPos.HasValue )
|
||
{
|
||
Vector3? worldPos = ViewPortPosToTagCameraViewWorldPos( mainCamera, (Vector3)viewPortPos, zSet );
|
||
if( worldPos.HasValue )
|
||
{
|
||
getWorldPos = (Vector3)worldPos;
|
||
succ = true;
|
||
}
|
||
}
|
||
return succ;
|
||
}
|
||
//根据世界坐标获取在地图UI上的坐标
|
||
public static Vector3 WorldPosToMapPos( float camYaw, Vector2 uiSize, Vector2 mapSize, Vector2 camPos, Vector3 worldPos )
|
||
{
|
||
Vector3 posInMini = new Vector2();
|
||
Quaternion rotateYaw = Quaternion.AngleAxis( -camYaw, Vector3.up );
|
||
Matrix4x4 viewMatrix = Matrix4x4.TRS( Vector3.zero, rotateYaw, Vector3.one );
|
||
Vector3 world_center_offset = new Vector3( worldPos.x - camPos.x, 0.0f, worldPos.z - camPos.y );
|
||
Vector3 camera_domain_offset = viewMatrix.MultiplyPoint( world_center_offset );
|
||
float scale_x = uiSize.x / mapSize.x;
|
||
float scale_z = uiSize.y / mapSize.y;
|
||
posInMini.x = camera_domain_offset.x * scale_x;
|
||
posInMini.y = camera_domain_offset.z * scale_z;
|
||
posInMini.z = 0.0f;
|
||
return posInMini;
|
||
}
|
||
|
||
//根据世界坐标获取在地图UI上的坐标
|
||
public static Vector3 WorldPosToMiniMapPos( float camYaw,
|
||
float uiSizeX, float uiSizeY,
|
||
float mapSizeX, float mapSizeY,
|
||
float camPosX, float camPosY,
|
||
float worldPosX, float worldPosY, float worldPosZ )
|
||
{
|
||
Vector3 posInMini = new Vector2();
|
||
Quaternion rotateYaw = Quaternion.AngleAxis( -camYaw, Vector3.up );
|
||
Matrix4x4 viewMatrix = Matrix4x4.TRS( Vector3.zero, rotateYaw, Vector3.one );
|
||
Vector3 world_center_offset = new Vector3( worldPosX - camPosX, 0.0f, worldPosZ - camPosY );
|
||
Vector3 camera_domain_offset = viewMatrix.MultiplyPoint( world_center_offset );
|
||
float scale_x = uiSizeX / mapSizeX;
|
||
float scale_z = uiSizeY / mapSizeY;
|
||
posInMini.x = camera_domain_offset.x * scale_x;
|
||
posInMini.y = camera_domain_offset.z * scale_z;
|
||
posInMini.z = 0.0f;
|
||
return posInMini;
|
||
}
|
||
|
||
//根据地图UI上的坐标获取在世界坐标
|
||
public static Vector3 MapPosToWorldPos( float camYaw, Vector2 uiSize, Vector2 mapSize, Vector2 camPos, Vector2 clickPos )
|
||
{
|
||
Vector3 worldPos = Vector3.zero;
|
||
Quaternion invRotateYaw = Quaternion.AngleAxis( camYaw, Vector3.up );
|
||
Matrix4x4 invViewMatrix = Matrix4x4.TRS( Vector3.zero, invRotateYaw, Vector3.one );
|
||
// current scale
|
||
float scale_x = uiSize.x / mapSize.x;
|
||
float scale_z = uiSize.y / mapSize.y;
|
||
// mini offset -> world offset
|
||
worldPos.x = clickPos.x / scale_x;
|
||
worldPos.z = clickPos.y / scale_z;
|
||
// camera_domain -> world_domain(based by camera center)
|
||
worldPos = invViewMatrix.MultiplyPoint( worldPos );
|
||
// normal world Axis
|
||
worldPos += new Vector3( camPos.x, 0, camPos.y );
|
||
return worldPos;
|
||
}
|
||
|
||
//根据地图UI上的坐标获取在世界坐标
|
||
public static Vector3 MiniMapPosToWorldPos( float camYaw,
|
||
float uiSizeX, float uiSizeY,
|
||
float mapSizeX, float mapSizeY,
|
||
float camPosX, float camPosY,
|
||
float clickPosX, float clickPosY, float clickPosZ )
|
||
{
|
||
Vector3 worldPos = Vector3.zero;
|
||
Quaternion invRotateYaw = Quaternion.AngleAxis( camYaw, Vector3.up );
|
||
Matrix4x4 invViewMatrix = Matrix4x4.TRS( Vector3.zero, invRotateYaw, Vector3.one );
|
||
// current scale
|
||
float scale_x = uiSizeX / mapSizeX;
|
||
float scale_z = uiSizeY / mapSizeY;
|
||
// mini offset -> world offset
|
||
worldPos.x = clickPosX / scale_x;
|
||
worldPos.z = clickPosY / scale_z;
|
||
// camera_domain -> world_domain(based by camera center)
|
||
worldPos = invViewMatrix.MultiplyPoint( worldPos );
|
||
// normal world Axis
|
||
worldPos += new Vector3( camPosX, 0, camPosY );
|
||
return worldPos;
|
||
}
|
||
|
||
public static void RotationToForward( Transform trans, float angle )
|
||
{
|
||
trans.localRotation = Quaternion.AngleAxis( angle, Vector3.forward );
|
||
}
|
||
|
||
#endregion
|
||
|
||
#region//处理GameObject名字的函数
|
||
|
||
//根据名字获取索引 :名字的格式: XXXX_01,XXXX_02 ,如果没有正确值的话,返回-1
|
||
public static int GetIndexByName( string goName )
|
||
{
|
||
int result = -1;
|
||
var arr = goName.Split( new char[] { '_' }, StringSplitOptions.RemoveEmptyEntries );
|
||
if( arr.Length == 2 )
|
||
{
|
||
int.TryParse( arr[ 1 ], out result );
|
||
}
|
||
return result;
|
||
}
|
||
|
||
//通过索引获取名字:prefixName_01
|
||
public static string GetNameByIndex( string prefixName, int index )
|
||
{
|
||
return string.Format( "{0}_{0:2D}", prefixName, index );
|
||
}
|
||
#endregion
|
||
|
||
|
||
#region //设置sprite
|
||
|
||
/// <summary>
|
||
/// 设计材料icon
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <param name="sprite"></param>
|
||
public static void SetMateralImgById( int id, UISprite sprite, UISprite qualityIcon = null )
|
||
{
|
||
//ItemModel model = GameCenter.ItemContianerSystem.GetItemByID<ItemModel>(ContainerType.ITEM_LOCATION_BAG, id);
|
||
|
||
DeclareItem item = DeclareItem.Get( id );
|
||
if( item == null )
|
||
{
|
||
//UnityEngine.Debug.LogError( "设置icon失败 id=" + id );
|
||
return;
|
||
}
|
||
|
||
SetIcon( item.Icon, sprite );
|
||
|
||
if( qualityIcon != null )
|
||
{
|
||
qualityIcon.color = ItemBase.GetQualityColor( item.Color );
|
||
}
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 设置装备icon
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <param name="sprite"></param>
|
||
public static DeclareEquip SetEquipImgById( int id, UISprite sprite, UISprite qualityIcon = null )
|
||
{
|
||
//ItemModel model = GameCenter.ItemContianerSystem.GetItemByUID<ItemModel>((ulong)id);
|
||
|
||
DeclareEquip item = DeclareEquip.Get( id );
|
||
if( item == null )
|
||
{
|
||
//UnityEngine.Debug.LogError( "设置icon失败 id=" + id );
|
||
return null;
|
||
}
|
||
|
||
SetIcon( item.Icon, sprite );
|
||
|
||
if( qualityIcon != null )
|
||
{
|
||
qualityIcon.color = ItemBase.GetQualityColor( item.Quality );
|
||
}
|
||
|
||
|
||
return item;
|
||
}
|
||
|
||
/// <summary>
|
||
/// 设置icon图标
|
||
/// </summary>
|
||
/// <param name="iconId"></param>
|
||
/// <param name="sprite"></param>
|
||
public static void SetIcon( int iconId, UISprite sprite )
|
||
{
|
||
var iconbase = sprite.transform.RequireComponent<UIIconBase>();
|
||
iconbase.UpdateIcon( iconId );
|
||
}
|
||
|
||
/// <summary>
|
||
/// 设置技能图标
|
||
/// </summary>
|
||
/// <param name="id"></param>
|
||
/// <param name="sprite"></param>
|
||
public static void SetSkillImgById( int id, UISprite sprite )
|
||
{
|
||
//ItemModel model = GameCenter.ItemContianerSystem.GetItemByID<ItemModel>(ContainerType.ITEM_LOCATION_BAG, id);
|
||
DeclareSkill item = DeclareSkill.Get( id );
|
||
if( item == null )
|
||
{
|
||
//UnityEngine.Debug.LogError( "技能找不到: " + id );
|
||
return;
|
||
}
|
||
|
||
SetIcon( item.Icon, sprite );
|
||
|
||
|
||
// UIPoolAssetsLoader.LoadAtlasPrefabAsyn(atlasName, atlasTrans =>
|
||
// {
|
||
// if (atlasTrans != null)
|
||
// {
|
||
// var itemAtlas = atlasTrans.GetComponent<UIAtlas>();
|
||
// if (null != itemAtlas)
|
||
// {
|
||
// sprite.atlas = itemAtlas;
|
||
// sprite.spriteName = spriteName;
|
||
// }
|
||
// }
|
||
// });
|
||
}
|
||
|
||
//为一个button的各种状态只有一个spritename
|
||
public static void SetOneSpriteWithButton( UIButton btn, string spriteName )
|
||
{
|
||
if( btn != null )
|
||
{
|
||
btn.normalSprite = spriteName;
|
||
btn.hoverSprite = spriteName;
|
||
btn.pressedSprite = spriteName;
|
||
btn.disabledSprite = spriteName;
|
||
}
|
||
}
|
||
|
||
//设置Tab按钮状态的设置
|
||
public static void SetTabButtonState( UIButton btn, UILabel label, bool isSelected )
|
||
{
|
||
if( isSelected )
|
||
{
|
||
btn.tweenTarget.transform.localScale = new Vector3( 1f, 1.1f, 1f );
|
||
//btn.normalSprite = "mainbutton2";
|
||
//btn.hoverSprite = "mainbutton2";
|
||
//btn.pressedSprite = "mainbutton2";
|
||
label.color = Color.white;
|
||
label.effectColor = new Color( 147 * 0.00392f, 32 * 0.00392f, 32 * 0.00392f );
|
||
}
|
||
else
|
||
{
|
||
btn.tweenTarget.transform.localScale = new Vector3( 1f, 1f, 1f );
|
||
//btn.normalSprite = "mainbutton1";
|
||
//btn.hoverSprite = "mainbutton1";
|
||
//btn.pressedSprite = "mainbutton1";
|
||
label.color = new Color( 197 * 0.00392f, 150 * 0.00392f, 78 * 0.00392f );
|
||
label.effectColor = Color.black;
|
||
}
|
||
}
|
||
|
||
//声音播放回调
|
||
public static void PlayUISoundFX( String soundName )
|
||
{
|
||
AudioPlayer.PlayUI( soundName );
|
||
}
|
||
|
||
//设置按钮状态
|
||
public static void SetBtnState( Transform trans, bool b )
|
||
{
|
||
if( trans )
|
||
{
|
||
UIButton btn = trans.RequireComponent<UIButton>();
|
||
if( btn != null )
|
||
btn.isEnabled = b;
|
||
}
|
||
}
|
||
//设置按钮响应时间
|
||
public static void SetBtnCall( Transform trans, EventDelegate.Callback func )
|
||
{
|
||
if( trans )
|
||
{
|
||
UIButton btn = trans.RequireComponent<UIButton>();
|
||
if( btn != null )
|
||
{
|
||
btn.onClick.Clear();
|
||
btn.onClick.Add( new EventDelegate( func ) );
|
||
}
|
||
}
|
||
}
|
||
//设置图片
|
||
public static void SetUISprite( Transform trans, string name )
|
||
{
|
||
if( trans )
|
||
{
|
||
UISprite spr = trans.RequireComponent<UISprite>();
|
||
if( spr != null )
|
||
{
|
||
spr.spriteName = name;
|
||
}
|
||
}
|
||
}
|
||
//设置slider
|
||
public static void SetUISlider( Transform trans, float value )
|
||
{
|
||
if( trans )
|
||
{
|
||
UISlider slider = trans.RequireComponent<UISlider>();
|
||
if( slider != null )
|
||
{
|
||
slider.value = value;
|
||
}
|
||
}
|
||
}
|
||
//设置文字颜色
|
||
public static void SetLabelColor( UILabel text, Color color )
|
||
{
|
||
if( text != null )
|
||
{
|
||
text.color = color;
|
||
}
|
||
}
|
||
|
||
public static void SetAllChildColorGray( Transform trs, bool isgray )
|
||
{
|
||
NGUITools.SetButtonGrayAndNotOnClick( trs, isgray );
|
||
}
|
||
|
||
#endregion
|
||
|
||
//克隆
|
||
public static GameObject Clone( GameObject go , bool isReset = false)
|
||
{
|
||
GameObject newGameObject = (GameObject)( GameObject.Instantiate( go ) );
|
||
newGameObject.name = go.name;
|
||
var tf = newGameObject.transform;
|
||
tf.parent = go.transform.parent;
|
||
if (isReset)
|
||
{
|
||
UnityUtils.Reset(tf);
|
||
}
|
||
else
|
||
{
|
||
tf.localRotation = go.transform.localRotation;
|
||
tf.localScale = go.transform.localScale;
|
||
tf.localPosition = go.transform.localPosition;
|
||
}
|
||
|
||
return newGameObject;
|
||
}
|
||
|
||
//克隆
|
||
public static GameObject Clone( GameObject go, Transform parentTrans, bool isReset = false)
|
||
{
|
||
GameObject newGameObject = (GameObject)( GameObject.Instantiate( go ) );
|
||
var tf = newGameObject.transform;
|
||
tf.parent = parentTrans;
|
||
if (isReset)
|
||
{
|
||
UnityUtils.Reset(tf);
|
||
}
|
||
else
|
||
{
|
||
tf.localRotation = go.transform.localRotation;
|
||
tf.localScale = go.transform.localScale;
|
||
tf.localPosition = go.transform.localPosition;
|
||
}
|
||
return newGameObject;
|
||
}
|
||
|
||
|
||
/// <summary>
|
||
/// 泰国奇葩的语言,显示竖着的文字,需要把label倒过来
|
||
/// </summary>
|
||
/// <param name="label"></param>
|
||
public static void SetTHLabel( UILabel label )
|
||
{
|
||
/*
|
||
if (LanguageSystem.Lang == LanguageConstDefine.TH)
|
||
{
|
||
if (label.transform.localEulerAngles.z == 0)
|
||
{
|
||
label.transform.localEulerAngles = new Vector3(0, 0, 90);
|
||
int width = label.width;
|
||
int height = label.height;
|
||
label.width = height;
|
||
label.height = width;
|
||
//label.SetDimensions(height, width);
|
||
|
||
label.overflowMethod = UILabel.Overflow.ShrinkContent;
|
||
label.alignment = NGUIText.Alignment.Center;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
if (label.transform.localEulerAngles.z == 90)
|
||
{
|
||
label.transform.localEulerAngles = Vector3.zero;
|
||
}
|
||
}
|
||
* */
|
||
|
||
}
|
||
//获取控件size.x
|
||
public static float GetSizeX( Transform tf )
|
||
{
|
||
UIWidget uiWidget = tf.GetComponent<UIWidget>();
|
||
if( uiWidget != null )
|
||
{
|
||
return uiWidget.localSize.x;
|
||
}
|
||
return 0f;
|
||
}
|
||
//获取控件size.y
|
||
public static float GetSizeY( Transform tf )
|
||
{
|
||
UIWidget uiWidget = tf.GetComponent<UIWidget>();
|
||
if( uiWidget != null )
|
||
{
|
||
return uiWidget.localSize.y;
|
||
}
|
||
return 0f;
|
||
}
|
||
//获取控件size
|
||
public static Vector2 GetSize( Transform tf )
|
||
{
|
||
UIWidget uiWidget = tf.GetComponent<UIWidget>();
|
||
if( uiWidget != null )
|
||
{
|
||
return uiWidget.localSize;
|
||
}
|
||
return Vector2.zero;
|
||
}
|
||
|
||
//增加 UIPanel 组件
|
||
public static UIPanel RequireUIPanel( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIPanel>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIPanel>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UILabel 组件
|
||
public static UILabel RequireUILabel( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UILabel>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UILabel>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UISprite 组件
|
||
public static UISprite RequireUISprite( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UISprite>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UISprite>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UIButton 组件
|
||
public static UIButton RequireUIButton( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIButton>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIButton>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UITexture 组件
|
||
public static UITexture RequireUITexture( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UITexture>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UITexture>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UISlider 组件
|
||
public static UISlider RequireUISlider( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UISlider>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UISlider>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UIScrollView 组件
|
||
public static UIScrollView RequireUIScrollView( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIScrollView>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIScrollView>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UITable 组件
|
||
public static UITable RequireUITable( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UITable>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UITable>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UIGrid 组件
|
||
public static UIGrid RequireUIGrid( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIGrid>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIGrid>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UIItem 组件
|
||
public static UIItem RequireUIItem( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIItem>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIItem>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UIListMenu 组件
|
||
public static UIListMenu RequireUIListMenu( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIListMenu>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIListMenu>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UIRoleSkinCompoent 组件
|
||
public static UIRoleSkinCompoent RequireUIRoleSkinCompoent( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIRoleSkinCompoent>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIRoleSkinCompoent>();
|
||
}
|
||
return _componet;
|
||
}
|
||
//增加 UIPlayerSkinCompoent 组件
|
||
public static UIPlayerSkinCompoent RequireUIPlayerSkinCompoent( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIPlayerSkinCompoent>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIPlayerSkinCompoent>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UIVfxSkinCompoent 组件
|
||
public static UIVfxSkinCompoent RequireUIVfxSkinCompoent( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIVfxSkinCompoent>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIVfxSkinCompoent>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UIIcon 组件
|
||
public static UIIcon RequireUIIcon( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIIcon>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIIcon>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UIIconBase 组件
|
||
public static UIIconBase RequireUIIconBase( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIIconBase>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIIconBase>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UIToggle 组件
|
||
public static UIToggle RequireUIToggle( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<UIToggle>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<UIToggle>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 SpringPanel 组件
|
||
public static SpringPanel RequireSpringPanel( Transform tf )
|
||
{
|
||
var _componet = tf.GetComponent<SpringPanel>();
|
||
if( _componet == null )
|
||
{
|
||
return tf.gameObject.AddComponent<SpringPanel>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UISpriteAnimation 组件
|
||
public static UISpriteAnimation RequireUISpriteAnimation(Transform tf)
|
||
{
|
||
var _componet = tf.GetComponent<UISpriteAnimation>();
|
||
if (_componet == null)
|
||
{
|
||
return tf.gameObject.AddComponent<UISpriteAnimation>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UIPolygonScript 组件
|
||
public static UIPolygonScript RequireUIPolygonScript(Transform tf)
|
||
{
|
||
var _componet = tf.GetComponent<UIPolygonScript>();
|
||
if (_componet == null)
|
||
{
|
||
return tf.gameObject.AddComponent<UIPolygonScript>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UIPlayerLevelLabel 组件
|
||
public static UIPlayerLevelLabel RequireUIPlayerLevelLabel(Transform tf)
|
||
{
|
||
var _componet = tf.GetComponent<UIPlayerLevelLabel>();
|
||
if (_componet == null)
|
||
{
|
||
return tf.gameObject.AddComponent<UIPlayerLevelLabel>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 NatureVfxEffect 组件
|
||
public static NatureVfxEffect RequireNatureVfxEffect(Transform tf)
|
||
{
|
||
var _componet = tf.GetComponent<NatureVfxEffect>();
|
||
if (_componet == null)
|
||
{
|
||
return tf.gameObject.AddComponent<NatureVfxEffect>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UILoopScrollViewBase 组件
|
||
public static UILoopScrollViewBase RequireUILoopScrollViewBase(Transform tf)
|
||
{
|
||
var _componet = tf.GetComponent<UILoopScrollViewBase>();
|
||
if (_componet == null)
|
||
{
|
||
return tf.gameObject.AddComponent<UILoopScrollViewBase>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
//增加 UIPlayerBagItem 组件
|
||
public static UIPlayerBagItem RequireUIPlayerBagItem(Transform tf)
|
||
{
|
||
var _componet = tf.GetComponent<UIPlayerBagItem>();
|
||
if (_componet == null)
|
||
{
|
||
return tf.gameObject.AddComponent<UIPlayerBagItem>();
|
||
}
|
||
return _componet;
|
||
}
|
||
|
||
// 增加 UISelectEquipItem 组件
|
||
public static UISelectEquipItem RequireUISelectEquipItem( Transform t )
|
||
{
|
||
var _comp = t.GetComponent<UISelectEquipItem>();
|
||
if( _comp == null )
|
||
{
|
||
return t.gameObject.AddComponent<UISelectEquipItem>();
|
||
}
|
||
return _comp;
|
||
}
|
||
|
||
// 增加 LoopMoveSceneScript 组件
|
||
public static LoopMoveSceneScript RequireLoopMoveSceneScript( Transform t )
|
||
{
|
||
var _comp = t.GetComponent<LoopMoveSceneScript>();
|
||
if( _comp == null )
|
||
{
|
||
return t.gameObject.AddComponent<LoopMoveSceneScript>();
|
||
}
|
||
return _comp;
|
||
}
|
||
|
||
// 增加 UIVideoTexture 组件
|
||
public static UIVideoTexture RequireUIVideoTexture( Transform t )
|
||
{
|
||
var _comp = t.GetComponent<UIVideoTexture>();
|
||
if( _comp == null )
|
||
{
|
||
return t.gameObject.AddComponent<UIVideoTexture>();
|
||
}
|
||
return _comp;
|
||
}
|
||
// 增加 DragScrollView 组件
|
||
public static UIDragScrollView RequireDragScrollView( Transform t )
|
||
{
|
||
var _comp = t.GetComponent<UIDragScrollView>();
|
||
if( _comp == null )
|
||
{
|
||
return t.gameObject.AddComponent<UIDragScrollView>();
|
||
}
|
||
return _comp;
|
||
}
|
||
public static TweenPosition RequireTweenPosition( Transform t )
|
||
{
|
||
var _comp = t.gameObject.RequireComponent<TweenPosition>();
|
||
return _comp;
|
||
}
|
||
//注册动画脚本
|
||
public static AnimListBaseScript RequireAnimListBaseScript( Transform t )
|
||
{
|
||
var _comp = t.GetComponent<AnimListBaseScript>();
|
||
if( _comp == null )
|
||
{
|
||
return t.gameObject.AddComponent<AnimListBaseScript>();
|
||
}
|
||
return _comp;
|
||
}
|
||
//注册animator脚本
|
||
public static Animator RequireAnimator( Transform t )
|
||
{
|
||
var _comp = t.GetComponent<Animator>();
|
||
if( _comp == null )
|
||
{
|
||
return t.gameObject.AddComponent<Animator>();
|
||
}
|
||
return _comp;
|
||
}
|
||
//获取ui阴影
|
||
public static UIShandowPlane RequireUIShandowPlane(Transform t)
|
||
{
|
||
var _comp = t.GetComponent<UIShandowPlane>();
|
||
if (_comp == null)
|
||
{
|
||
_comp = t.gameObject.AddComponent<UIShandowPlane>();
|
||
}
|
||
return _comp;
|
||
}
|
||
//获取摄像机
|
||
public static Camera RequireCamera(Transform t)
|
||
{
|
||
var _comp = t.GetComponent<Camera>();
|
||
if (_comp == null)
|
||
{
|
||
_comp = t.gameObject.AddComponent<Camera>();
|
||
}
|
||
return _comp;
|
||
}
|
||
|
||
//获取金币窗体
|
||
public static UIMoneyForm RequireUIMoneyForm(Transform t)
|
||
{
|
||
var _comp = t.GetComponent<UIMoneyForm>();
|
||
if (_comp == null)
|
||
{
|
||
_comp = t.gameObject.AddComponent<UIMoneyForm>();
|
||
}
|
||
return _comp;
|
||
}
|
||
|
||
//获取帧动画
|
||
public static UIFrameAnimation RequireUIFrameAnimation(Transform t)
|
||
{
|
||
var _comp = t.GetComponent<UIFrameAnimation>();
|
||
if (_comp == null)
|
||
{
|
||
_comp = t.gameObject.AddComponent<UIFrameAnimation>();
|
||
}
|
||
return _comp;
|
||
}
|
||
|
||
//lua端调用c#的string.Format函数
|
||
public static string Format( string original, params object[] str )
|
||
{
|
||
return string.Format( original, str );
|
||
}
|
||
|
||
public static string FormatLuatable( string original, object obj )
|
||
{
|
||
var _ret = string.Empty;
|
||
var _luaTable = obj as XLua.LuaTable;
|
||
if( _luaTable != null )
|
||
{
|
||
var _params = new object[ _luaTable.Length ];
|
||
for( int i = 0; i < _luaTable.Length; i++ )
|
||
{
|
||
var ret = string.Empty;
|
||
_luaTable.Get<int, string>( i + 1, out ret );
|
||
_params[ i ] = ret;
|
||
}
|
||
_ret = string.Format( original, _params );
|
||
}
|
||
return _ret;
|
||
}
|
||
|
||
//设置颜色
|
||
public static void SetColor( UILabel label, float r, float g, float b, float a )
|
||
{
|
||
label.color = new Color( r, g, b, a );
|
||
}
|
||
|
||
//设置颜色
|
||
public static void SetColor( UILabel label, string str )
|
||
{
|
||
Color color;
|
||
if( ColorUtility.TryParseHtmlString( str, out color ) )
|
||
{
|
||
label.color = color;
|
||
}
|
||
}
|
||
|
||
public static void SetEffectColor(UILabel label, float r, float g, float b, float a)
|
||
{
|
||
label.effectColor = new Color(r, g, b, a);
|
||
}
|
||
|
||
//根据品质设置颜色
|
||
public static void SetColorByQuality(UILabel label, int quality)
|
||
{
|
||
label.color = ItemBase.GetQualityColor(quality);
|
||
}
|
||
|
||
//设置颜色
|
||
public static void SetColor( UITexture texture, float r, float g, float b, float a )
|
||
{
|
||
texture.color = new Color( r, g, b, a );
|
||
}
|
||
|
||
//设置颜色
|
||
public static void SetColor( UITexture texture, string str )
|
||
{
|
||
Color color;
|
||
if( ColorUtility.TryParseHtmlString( str, out color ) )
|
||
{
|
||
texture.color = color;
|
||
}
|
||
}
|
||
|
||
//设置颜色
|
||
public static void SetColor( UISprite sprite, float r, float g, float b, float a )
|
||
{
|
||
sprite.color = new Color( r, g, b, a );
|
||
}
|
||
|
||
//设置颜色
|
||
public static void SetColor( UISprite sprite, string str )
|
||
{
|
||
Color color;
|
||
if( ColorUtility.TryParseHtmlString( str, out color ) )
|
||
{
|
||
sprite.color = color;
|
||
}
|
||
}
|
||
|
||
//设置sprite渐变色
|
||
public static void SetSprGenColor( UISprite sprite, int quality )
|
||
{
|
||
if( sprite != null )
|
||
{
|
||
switch(quality)
|
||
{
|
||
case QualityCode.White:
|
||
sprite.rtColor = Color.white;
|
||
sprite.rbColor = Color.white;
|
||
sprite.ltColor = Color.white;
|
||
sprite.lbColor = Color.white;
|
||
break;
|
||
case QualityCode.Green:
|
||
sprite.rtColor = new Color( 36 / 255.0f, 64 / 255.0f, 78 / 255.0f );
|
||
sprite.rbColor = new Color( 48 / 255.0f, 104 / 255.0f, 113 / 255.0f );
|
||
sprite.ltColor = new Color( 60 / 255.0f, 193 / 255.0f, 189 / 255.0f );
|
||
sprite.lbColor = new Color( 60 / 255.0f, 193 / 255.0f, 189 / 255.0f );
|
||
break;
|
||
case QualityCode.Blue:
|
||
sprite.rtColor = new Color( 36 / 255.0f, 49 / 255.0f, 78 / 255.0f );
|
||
sprite.rbColor = new Color( 48 / 255.0f, 74 / 255.0f, 112 / 255.0f );
|
||
sprite.ltColor = new Color( 19 / 255.0f, 95 / 255.0f, 178 / 255.0f );
|
||
sprite.lbColor = new Color( 128 / 255.0f, 182 / 255.0f, 1 );
|
||
break;
|
||
case QualityCode.Violet:
|
||
sprite.rtColor = new Color( 57 / 255.0f, 40 / 255.0f, 78 / 255.0f );
|
||
sprite.rbColor = new Color( 88 / 255.0f, 49 / 255.0f, 112 / 255.0f );
|
||
sprite.ltColor = new Color( 156 / 255.0f, 50 / 255.0f, 207 / 255.0f );
|
||
sprite.lbColor = new Color( 223 / 255.0f, 131 / 255.0f, 1.0f );
|
||
break;
|
||
case QualityCode.Orange:
|
||
sprite.rtColor = new Color( 71 / 255.0f, 54 / 255.0f, 54 / 255.0f );
|
||
sprite.rbColor = new Color( 117 / 255.0f, 78 / 255.0f, 68 / 255.0f );
|
||
sprite.ltColor = new Color( 202 / 255.0f, 96 / 255.0f, 49 / 255.0f );
|
||
sprite.lbColor = new Color( 244 / 255.0f, 179 / 255.0f, 146 / 255.0f );
|
||
break;
|
||
case QualityCode.Golden:
|
||
sprite.rtColor = new Color( 69 / 255.0f, 59 / 255.0f, 47 / 255.0f );
|
||
sprite.rbColor = new Color( 113 / 255.0f, 90 / 255.0f, 50 / 255.0f );
|
||
sprite.ltColor = new Color( 220 / 255.0f, 158 / 255.0f, 41 / 255.0f );
|
||
sprite.lbColor = new Color( 244 / 255.0f, 212 / 255.0f, 107 / 255.0f );
|
||
break;
|
||
case QualityCode.Red:
|
||
sprite.rtColor = new Color( 53 / 255.0f, 37 / 255.0f, 48 / 255.0f );
|
||
sprite.rbColor = new Color( 88 / 255.0f, 42 / 255.0f, 49 / 255.0f );
|
||
sprite.ltColor = new Color( 168 / 255.0f, 29 / 255.0f, 35 / 255.0f );
|
||
sprite.lbColor = new Color( 230 / 255.0f, 98 / 255.0f, 95 / 255.0f );
|
||
break;
|
||
case QualityCode.Pink:
|
||
sprite.rtColor = new Color( 96 / 255.0f, 37 / 255.0f, 78 / 255.0f );
|
||
sprite.rbColor = new Color( 147 / 255.0f, 52 / 255.0f, 120 / 255.0f );
|
||
sprite.ltColor = new Color( 230 / 255.0f, 14 / 255.0f, 179 / 255.0f );
|
||
sprite.lbColor = new Color( 251 / 255.0f, 155 / 255.0f, 227 / 255.0f );
|
||
break;
|
||
case QualityCode.DarkGolden:
|
||
sprite.rtColor = new Color( 46 / 255.0f, 39 / 255.0f, 48 / 255.0f );
|
||
sprite.rbColor = new Color( 75 / 255.0f, 48 / 255.0f, 50 / 255.0f );
|
||
sprite.ltColor = new Color( 155 / 255.0f, 63 / 255.0f, 32 / 255.0f );
|
||
sprite.lbColor = new Color( 235 / 255.0f, 156 / 255.0f, 97 / 255.0f );
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
// 复制文本到剪贴板
|
||
public static void CopyToClipboard( string content )
|
||
{
|
||
var _msg = string.Empty;
|
||
if( !string.IsNullOrEmpty( content ) )
|
||
{
|
||
#if UNITY_EDITOR
|
||
GUIUtility.systemCopyBuffer = content;
|
||
#else
|
||
Code.Center.GameCenter.SDKSystem.CopyToClipboard( content );
|
||
#endif
|
||
_msg = Thousandto.Cfg.Data.DeclareMessageString.Get(Thousandto.Cfg.Data.DeclareMessageString.C_COPY_BORD_SUCC);
|
||
}
|
||
else
|
||
{
|
||
_msg = Thousandto.Cfg.Data.DeclareMessageString.Get(Thousandto.Cfg.Data.DeclareMessageString.C_COPY_BORD_ISEMPITY);
|
||
}
|
||
Code.Center.GameCenter.MsgPromptSystem.ShowPrompt( _msg );
|
||
}
|
||
|
||
public static int GetStringBytesLength( string str )
|
||
{
|
||
if( string.IsNullOrEmpty( str ) )
|
||
{
|
||
return 0;
|
||
}
|
||
else
|
||
{
|
||
return StringUtils.CalcStringLenByUCS(str);
|
||
}
|
||
}
|
||
|
||
public static string StringSubString( string str, int startIndex, int length = 0 )
|
||
{
|
||
var ret = string.Empty;
|
||
if( !string.IsNullOrEmpty( str ) )
|
||
{
|
||
return StringUtils.SubStringByUCS(str,startIndex,length);
|
||
}
|
||
return ret;
|
||
}
|
||
public static void SetGameObjectNameByNumber(GameObject go, int number)
|
||
{
|
||
go.name = number.ToString();
|
||
}
|
||
#region UILabel
|
||
public static void SetTextByMessageStringID(UILabel label, long id)
|
||
{
|
||
if (label != null)
|
||
{
|
||
label.text = DeclareMessageString.Get((int)id);
|
||
}
|
||
}
|
||
|
||
public static void SetTextByMessageStringID(UILabel label, long id, params object[] parames)
|
||
{
|
||
if (label != null)
|
||
{
|
||
label.text = string.Format(DeclareMessageString.Get((int)id), parames);
|
||
}
|
||
}
|
||
|
||
public static void SetTextByStringDefinesID(UILabel label, long id)
|
||
{
|
||
if (label != null)
|
||
{
|
||
label.text = CfgStringLua.Get((int)id);
|
||
}
|
||
}
|
||
|
||
public static void SetTextByStringDefinesID(UILabel label, long id, params object[] parames)
|
||
{
|
||
if (label != null)
|
||
{
|
||
label.text = string.Format(CfgStringLua.Get((int)id), parames);
|
||
}
|
||
}
|
||
public static void SetTextByBigNumber(UILabel label, long number, bool isUseBigUnit = false, int validCount = 0)
|
||
{
|
||
if (label != null)
|
||
{
|
||
if (isUseBigUnit)
|
||
{
|
||
label.text = CommonUtils.CovertToBigUnit(number, validCount);
|
||
}
|
||
else
|
||
{
|
||
label.text = number.ToString();
|
||
}
|
||
}
|
||
}
|
||
public static void SetTextByNumber(UILabel label, double number, bool isUseBigUnit = false, int validCount = 0)
|
||
{
|
||
if (label != null)
|
||
{
|
||
if (isUseBigUnit)
|
||
{
|
||
label.text = CommonUtils.CovertToBigUnit(number, validCount);
|
||
}
|
||
else
|
||
{
|
||
label.text = number.ToString();
|
||
}
|
||
}
|
||
}
|
||
|
||
public static void SetTextByString(UILabel label, string str)
|
||
{
|
||
if(label != null)
|
||
{
|
||
label.text = str;
|
||
}
|
||
}
|
||
|
||
public static void ClearText(UILabel label)
|
||
{
|
||
if (label != null)
|
||
{
|
||
label.text = "";
|
||
}
|
||
}
|
||
|
||
public static void SetTextFormatById(UILabel label, long formatId, long id)
|
||
{
|
||
if (label != null)
|
||
{
|
||
label.text = string.Format(CfgStringLua.Get((int)formatId), CfgStringLua.Get((int)id));
|
||
}
|
||
}
|
||
|
||
public static void SetTextFormat(UILabel label, string format, params object[] parames)
|
||
{
|
||
if (label != null)
|
||
{
|
||
label.text = string.Format(format, parames);
|
||
}
|
||
}
|
||
|
||
//设置百分比类型的Label
|
||
public static void SetTextByPercent(UILabel label, double num)
|
||
{
|
||
if (label != null)
|
||
{
|
||
label.text = string.Format(DeclareMessageString.Get(DeclareMessageString.Percent), num);
|
||
}
|
||
}
|
||
|
||
//设置进度类型的Label
|
||
public static void SetTextByProgress(UILabel label, double numLeft, double numRight, bool isUseBigUnit = false, int validCount = 0)
|
||
{
|
||
if (label != null)
|
||
{
|
||
if (isUseBigUnit)
|
||
{
|
||
label.text = string.Format(DeclareMessageString.Get(DeclareMessageString.Progress), CommonUtils.CovertToBigUnit(numLeft, validCount), CommonUtils.CovertToBigUnit(numRight, validCount));
|
||
}
|
||
else
|
||
{
|
||
label.text = string.Format(DeclareMessageString.Get(DeclareMessageString.Progress), numLeft, numRight);
|
||
}
|
||
}
|
||
}
|
||
|
||
public static void SetTextMMSS(UILabel label, double second)
|
||
{
|
||
if (label != null)
|
||
{
|
||
var lSec = (long)second;
|
||
label.text = string.Format("{0:D2}:{1:D2}", lSec / 60, lSec % 60);
|
||
}
|
||
}
|
||
|
||
public static void SetTextHHMMSS(UILabel label, double second)
|
||
{
|
||
if (label != null)
|
||
{
|
||
var ts = TimeSpan.FromSeconds(second);
|
||
label.text = string.Format("{0:D2}:{1:D2}:{2:D2}", ts.Hours + ts.Days * 24, ts.Minutes, ts.Seconds);
|
||
}
|
||
}
|
||
|
||
public static void SetTextDDHHMMSS(UILabel label, double second)
|
||
{
|
||
if (label != null)
|
||
{
|
||
var ts = TimeSpan.FromSeconds(second);
|
||
label.text = DeclareMessageString.Format(DeclareMessageString.WINGSRENT_LEFTTIME, ts.Days, ts.Hours, ts.Minutes, ts.Seconds);
|
||
}
|
||
}
|
||
|
||
public static void SetTextYYMMDDHHMMSS(UILabel label, double second)
|
||
{
|
||
if (label != null)
|
||
{
|
||
DateTime startTime = new DateTime(1970, 1, 1);
|
||
DateTime dateTime = TimeZone.CurrentTimeZone.ToLocalTime(startTime);
|
||
dateTime = dateTime.AddSeconds(second);
|
||
label.text = string.Format("{0:D2}-{1:D2}-{2:D2} {3:D2}:{4:D2}:{5:D2}", dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second);
|
||
}
|
||
}
|
||
|
||
public static void SetTextYYMMDDHHMMSSNotZone(UILabel label, double second)
|
||
{
|
||
if (label != null)
|
||
{
|
||
DateTime dateTime = new DateTime(1970, 1, 1);
|
||
dateTime = dateTime.AddSeconds(second);
|
||
label.text = string.Format("{0:D2}-{1:D2}-{2:D2} {3:D2}:{4:D2}:{5:D2}", dateTime.Year, dateTime.Month, dateTime.Day, dateTime.Hour, dateTime.Minute, dateTime.Second);
|
||
}
|
||
}
|
||
public static void SetTextByPropName(UILabel label, long propId, string formatString)
|
||
{
|
||
if (label != null)
|
||
{
|
||
if(string.IsNullOrEmpty(formatString))
|
||
{
|
||
label.text = BattlePropTools.GetBattlePropName((int)propId);
|
||
}
|
||
else
|
||
{
|
||
label.text = string.Format(formatString, BattlePropTools.GetBattlePropName((int)propId));
|
||
}
|
||
}
|
||
}
|
||
public static void SetTextByPropValue(UILabel label, long propId, long propValue, string formatString)
|
||
{
|
||
if (label != null)
|
||
{
|
||
if(string.IsNullOrEmpty(formatString))
|
||
{
|
||
label.text = BattlePropTools.GetBattleValueText((int)propId, propValue);
|
||
}
|
||
else
|
||
{
|
||
label.text = string.Format(formatString, BattlePropTools.GetBattleValueText((int)propId, propValue));
|
||
}
|
||
}
|
||
}
|
||
public static void SetTextByPropNameAndValue(UILabel label, long propId, long propValue, string formatString)
|
||
{
|
||
if (label != null)
|
||
{
|
||
if (string.IsNullOrEmpty(formatString))
|
||
{
|
||
label.text = string.Format("{0}+{1}", BattlePropTools.GetBattlePropName((int)propId), BattlePropTools.GetBattleValueText((int)propId, propValue));
|
||
}
|
||
else
|
||
{
|
||
label.text = string.Format(formatString, BattlePropTools.GetBattlePropName((int)propId), BattlePropTools.GetBattleValueText((int)propId, propValue));
|
||
}
|
||
}
|
||
}
|
||
|
||
//获取文本内容
|
||
public static string GetText(UILabel label)
|
||
{
|
||
if (label != null)
|
||
{
|
||
return label.text;
|
||
}
|
||
return string.Empty;
|
||
}
|
||
public static FRealObjectScript FindFRealObjectScript(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<FRealObjectScript>();
|
||
}
|
||
return trans.Find(path).GetComponent<FRealObjectScript>();
|
||
}
|
||
public static UIButton FindBtn(Transform trans, string path)
|
||
{
|
||
if(string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIButton>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIButton>();
|
||
}
|
||
public static UIPanel FindPanel(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIPanel>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIPanel>();
|
||
}
|
||
public static UILabel FindLabel(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UILabel>();
|
||
}
|
||
return trans.Find(path).GetComponent<UILabel>();
|
||
}
|
||
public static UITexture FindTex(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UITexture>();
|
||
}
|
||
return trans.Find(path).GetComponent<UITexture>();
|
||
}
|
||
public static UITexture RequireTex(Transform trans, string path)
|
||
{
|
||
Transform tmpTrans = null;
|
||
if (string.IsNullOrEmpty(path))
|
||
tmpTrans = trans;
|
||
else
|
||
tmpTrans = trans.Find(path);
|
||
return UnityUtils.RequireComponent<UITexture>(tmpTrans.gameObject);
|
||
}
|
||
public static UISprite FindSpr(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UISprite>();
|
||
}
|
||
return trans.Find(path).GetComponent<UISprite>();
|
||
}
|
||
public static UIWidget FindWid(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIWidget>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIWidget>();
|
||
}
|
||
public static UIGrid FindGrid(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIGrid>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIGrid>();
|
||
}
|
||
public static UITable FindTable(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UITable>();
|
||
}
|
||
return trans.Find(path).GetComponent<UITable>();
|
||
}
|
||
public static UIToggle FindToggle(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIToggle>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIToggle>();
|
||
}
|
||
public static UIScrollView FindScrollView(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIScrollView>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIScrollView>();
|
||
}
|
||
public static UIProgressBar FindProgressBar(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIProgressBar>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIProgressBar>();
|
||
}
|
||
public static UISlider FindSlider(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UISlider>();
|
||
}
|
||
return trans.Find(path).GetComponent<UISlider>();
|
||
}
|
||
public static UIInput FindInput(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIInput>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIInput>();
|
||
}
|
||
public static TweenPosition FindTweenPosition(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<TweenPosition>();
|
||
}
|
||
return trans.Find(path).GetComponent<TweenPosition>();
|
||
}
|
||
public static TweenColor FindTweenColor(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<TweenColor>();
|
||
}
|
||
return trans.Find(path).GetComponent<TweenColor>();
|
||
}
|
||
public static TweenScale FindTweenScale(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<TweenScale>();
|
||
}
|
||
return trans.Find(path).GetComponent<TweenScale>();
|
||
}
|
||
public static TweenRotation FindTweenRotation(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<TweenRotation>();
|
||
}
|
||
return trans.Find(path).GetComponent<TweenRotation>();
|
||
}
|
||
public static TweenAlpha FindTweenAlpha(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<TweenAlpha>();
|
||
}
|
||
return trans.Find(path).GetComponent<TweenAlpha>();
|
||
}
|
||
public static Camera FindCamera(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<Camera>();
|
||
}
|
||
return trans.Find(path).GetComponent<Camera>();
|
||
}
|
||
public static BoxCollider FindBoxCollider(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<BoxCollider>();
|
||
}
|
||
return trans.Find(path).GetComponent<BoxCollider>();
|
||
}
|
||
public static UIScrollBar FindScrollBar(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIScrollBar>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIScrollBar>();
|
||
}
|
||
public static UISutureTexture FindSutureTex(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UISutureTexture>();
|
||
}
|
||
return trans.Find(path).GetComponent<UISutureTexture>();
|
||
}
|
||
|
||
public static UILuaForm FindLuaForm(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UILuaForm>();
|
||
}
|
||
return trans.Find(path).GetComponent<UILuaForm>();
|
||
}
|
||
public static UIExtendLuaForm FindExtendLuaForm(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIExtendLuaForm>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIExtendLuaForm>();
|
||
}
|
||
public static UIPlayerBagItem FindUIPlayerBagItem(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIPlayerBagItem>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIPlayerBagItem>();
|
||
}
|
||
public static UIEventListener FindEventListener(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<UIEventListener>();
|
||
}
|
||
return trans.Find(path).GetComponent<UIEventListener>();
|
||
}
|
||
|
||
public static TweenTransform FindTweenTransform(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<TweenTransform>();
|
||
}
|
||
return trans.Find(path).GetComponent<TweenTransform>();
|
||
}
|
||
|
||
public static Transform SearchHierarchy(Transform current, string name, bool ignoreCase = false)
|
||
{
|
||
return UnityHierarchyUtils.SearchHierarchy(current, name, ignoreCase);
|
||
}
|
||
|
||
public static PlayableDirector FindPlayableDirector(Transform trans, string path)
|
||
{
|
||
if (string.IsNullOrEmpty(path))
|
||
{
|
||
return trans.GetComponent<PlayableDirector>();
|
||
}
|
||
var temp = trans.Find(path);
|
||
if (temp != null)
|
||
{
|
||
return temp.GetComponent<PlayableDirector>();
|
||
}
|
||
return null;
|
||
}
|
||
public static UIMainChat RequireUIMainChat(Transform trans)
|
||
{
|
||
var result = trans.GetComponent<UIMainChat>();
|
||
if (result == null)
|
||
{
|
||
result = trans.gameObject.AddComponent<UIMainChat>();
|
||
}
|
||
return result;
|
||
}
|
||
public static UIBlinkCompoent RequireUIBlinkCompoent(Transform tf)
|
||
{
|
||
var _componet = tf.GetComponent<UIBlinkCompoent>();
|
||
if (_componet == null)
|
||
{
|
||
return tf.gameObject.AddComponent<UIBlinkCompoent>();
|
||
}
|
||
return _componet;
|
||
}
|
||
public static UISpriteSelectEffect RequireUISpriteSelectEffect(Transform tf)
|
||
{
|
||
var _componet = tf.GetComponent<UISpriteSelectEffect>();
|
||
if (_componet == null)
|
||
{
|
||
return tf.gameObject.AddComponent<UISpriteSelectEffect>();
|
||
}
|
||
return _componet;
|
||
}
|
||
#endregion
|
||
|
||
|
||
/// <summary>
|
||
/// 把Panel的Clip偏移归零
|
||
/// </summary>
|
||
/// <param name="panel"></param>
|
||
public static void PanelClipOffsetToZero(UIPanel panel)
|
||
{
|
||
if (panel != null)
|
||
{
|
||
var offset = panel.clipOffset;
|
||
var localpos = panel.transform.localPosition;
|
||
localpos.x += offset.x;
|
||
localpos.y += offset.y;
|
||
panel.clipOffset = Vector2.zero;
|
||
panel.transform.localPosition = localpos;
|
||
var sp = panel.GetComponent<SpringPanel>();
|
||
if (sp != null)
|
||
{
|
||
sp.target = localpos;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
Debug.LogError("Panel is NULL!!!");
|
||
}
|
||
}
|
||
|
||
//yuqiang 2018/05/22 use for multi-language
|
||
public static string StripLanSymbol(string text, string lan)
|
||
{
|
||
if (string.IsNullOrEmpty(lan))
|
||
lan = UnityEngine.Gonbest.MagicCube.FLanguage.CH;
|
||
if (string.IsNullOrEmpty(text))
|
||
return text;
|
||
|
||
int offset = 0;
|
||
int startIndex = 0;
|
||
int endIndex = 0;
|
||
|
||
string startLanTag = lan;
|
||
string endLanTag = "/" + lan;
|
||
int lanLen = startLanTag.Length;
|
||
int endLanLen = endLanTag.Length;
|
||
int textLen = text.Length;
|
||
|
||
bool findStart = false;
|
||
bool findEnd = false;
|
||
|
||
System.Text.StringBuilder sb = new System.Text.StringBuilder();
|
||
for (offset = 0; offset < textLen; ++offset)
|
||
{
|
||
if (offset + lanLen + 1 >= textLen) break;
|
||
|
||
if (text[offset] == '[' && text[offset + lanLen + 1] == ']')
|
||
{
|
||
for (int i = 0; i < lanLen; ++i)
|
||
{
|
||
if (text[offset + i + 1] == startLanTag[i])
|
||
{
|
||
findStart = true;
|
||
}
|
||
else
|
||
{
|
||
findStart = false;
|
||
break;
|
||
}
|
||
}
|
||
if (findStart)
|
||
{
|
||
//skip ']'
|
||
offset += lanLen + 1 + 1;
|
||
startIndex = offset;
|
||
}
|
||
}
|
||
|
||
if (offset + endLanLen + 1 >= textLen) break;
|
||
|
||
if (findStart)
|
||
{
|
||
if (text[offset] == '[' && text[offset + endLanLen + 1] == ']')
|
||
{
|
||
for (int i = 0; i < endLanLen; ++i)
|
||
{
|
||
if (text[offset + i + 1] == endLanTag[i])
|
||
{
|
||
findEnd = true;
|
||
}
|
||
else
|
||
{
|
||
findEnd = false;
|
||
break;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (findEnd)
|
||
{
|
||
endIndex = offset;
|
||
if (endIndex > 0 && endIndex >= startIndex)
|
||
{
|
||
sb.Append(text.Substring(startIndex, endIndex - startIndex));
|
||
}
|
||
startIndex = endIndex;
|
||
findEnd = false;
|
||
//跳到语言tag末尾
|
||
offset += endLanLen + 1 + 1;
|
||
continue;
|
||
}
|
||
}
|
||
}
|
||
|
||
if (sb.Length > 0)
|
||
return sb.ToString();
|
||
|
||
return text;
|
||
}
|
||
}
|
||
}
|