powerfun-unity/Assets/Scripts/UI/Control/PFUIInputField.cs

144 lines
5.2 KiB
C#
Raw Normal View History

2021-03-30 14:23:41 +08:00
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.EventSystems;
using UnityEngine.UI;
namespace Assets.Scripts.UI.Control
{
public class PFUIInputField: PFUIComponentBase
{
[SerializeField]
private InputField mInnerInputField;
private Outline outline;
private bool isSelected = false;
2021-03-30 14:23:41 +08:00
public string Text
{
get
{
return this.mInnerInputField.text;
}
set
{
this.mInnerInputField.text = value;
}
}
2021-04-21 16:16:14 +08:00
string placeHolderText;
2021-03-30 14:23:41 +08:00
public void OnSelect(BaseEventData eventData)
{
if (this.gameObject.activeInHierarchy == false)
{
return;
}
isSelected = true;
2021-03-30 14:23:41 +08:00
//throw new NotImplementedException();
this.mInnerInputField.OnSelect(eventData);
//var image = this.transform.GetComponent<Image>();
// var png = Resources.Load<Sprite>("Images/ipt-1");
//image.sprite = png;
2021-04-16 17:49:11 +08:00
var _text = mInnerInputField.transform.Find("Text").GetComponent<Text>();
if (_text.color!=Color.white)
{
Text = "";
}
_text.color = Color.white;
2021-04-21 16:16:14 +08:00
transform.Find("Placeholder").GetComponent<Text>().text = "";
outline.enabled = true;
ColorUtility.TryParseHtmlString("#F93086", out Color color);
outline.effectColor = color;
2021-03-30 14:23:41 +08:00
}
public void OnDeselect(BaseEventData eventData)
{
if(this.gameObject.activeInHierarchy == false)
{
return;
}
isSelected = false;
2021-03-30 14:23:41 +08:00
this.mInnerInputField.OnDeselect(eventData);
2021-04-21 16:16:14 +08:00
transform.Find("Placeholder").GetComponent<Text>().text = placeHolderText;
//var image = this.transform.GetComponent<Image>();
//var png1 = Resources.Load<Sprite>("Images/ipt-0");
//image.sprite = png1;
outline.enabled = false;
2021-03-30 14:23:41 +08:00
}
void Awake()
{
Material material = null;
if (material == null)
{
material = Instantiate(Resources.Load<Material>("UI/Material/RoundedCornersTextureMaterial"));
}
var rect = ((RectTransform)transform).rect;
2021-04-15 15:57:29 +08:00
material.SetVector(Shader.PropertyToID("_WidthHeightRadius"), new Vector4(rect.width, rect.height, Math.Min(rect.height*0.7f, 50f), 0));
gameObject.GetComponent<Image>().material = material;
outline = this.GetComponent<Outline>();
if (outline == null)
{
outline = this.gameObject.AddComponent<Outline>();
outline.effectDistance = new Vector2(2, 2);
2021-04-15 15:57:29 +08:00
outline.enabled = false;
}
2021-04-19 14:36:08 +08:00
//UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.PointerClick, new UnityAction<BaseEventData>(this.OnSelect));
2021-03-30 14:23:41 +08:00
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.Select, new UnityAction<BaseEventData>(this.OnSelect));
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.Deselect, new UnityAction<BaseEventData>(this.OnDeselect));
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.PointerEnter, new UnityAction<BaseEventData>((e) =>
{
if (isSelected)
{
return;
}
outline.enabled = true;
ColorUtility.TryParseHtmlString("#6E6E7D", out Color color);
outline.effectColor = color;
}));
UIManager.AddEvent(this.mInnerInputField.gameObject, EventTriggerType.PointerExit, new UnityAction<BaseEventData>(e =>
{
if (isSelected)
{
return;
}
//outline = this.gameObject.AddComponent<Outline>();
outline.enabled = false;
}));
2021-04-21 16:16:14 +08:00
placeHolderText = transform.Find("Placeholder").GetComponent<Text>().text;
}
public void SetValidate(bool value)
{
if (value)
{
2021-04-16 17:49:11 +08:00
outline.enabled = true;
outline.effectColor = Utils.HexToColorHtml("#F93086");
ColorUtility.TryParseHtmlString("#F93086", out Color color);
this.mInnerInputField.transform.Find("Text").GetComponent<Text>().color = color;
}
else
{
2021-04-16 17:49:11 +08:00
this.mInnerInputField.transform.Find("Text").GetComponent<Text>().color = Color.white;
outline.enabled = false;
}
2021-03-30 14:23:41 +08:00
}
2021-04-16 17:49:11 +08:00
public void SetValidate(string msg)
{
this.mInnerInputField.transform.Find("Text").GetComponent<Text>().color = Utils.HexToColorHtml("#F93086");
Text = msg;
outline.enabled = true;
outline.effectColor = Utils.HexToColorHtml("#F93086");
}
2021-03-30 14:23:41 +08:00
}
}