NGUI Unity обрабатываем нажатие на слово в тексте



Если вам нужно обработать нажатие на слово в тексте, то самый простой способ — использовать встроенные средства в NGUI 3.5.6+

вот скрипт:

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(BoxCollider))]
public class TapLabel : MonoBehaviour
{
	private UILabel _label;

	private string _text = "My cool text";

	// Use this for initialization
	void Start ()
	{
		_label = GetComponent<UILabel>();

		_label.text = _text;

		UIEventListener.Get(_label.cachedGameObject).onPress = OnLabelPress;
	}
	
	// Update is called once per frame
	private void OnLabelPress(GameObject sender, bool pressed)
	{
		_label.text = _text;

		if(!pressed)
			return;

		Vector2 screenPos = Input.mousePosition; //grab screen coords where you tapped
		Camera cam = NGUITools.FindCameraForLayer (gameObject.layer);
		Vector3 worldPos = cam.ScreenToWorldPoint (screenPos);//fancy unity convert screen coords to world coords

		var word = _label.GetWordAtPosition(worldPos);
		
		if(!string.IsNullOrEmpty(word))
		{
			_label.text = _text.Replace(word,"[u][ff0000]" + word + "[-][/u]");
		}
	}
}


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.