[TUTORIAL] Atributo de Propriedade para Seleção de Tags.
2 participantes
Página 1 de 1
[TUTORIAL] Atributo de Propriedade para Seleção de Tags.
Pessoal pra quem quer colocar as tags como propriedades nos scripts encontrei esse site com uma solução criando a o atributo [TagSelector]
Exemplo:
Criando o atributo da propriedade;
Exemplo:(fonte) - http://www.brechtos.com/tagselectorattribute/
Exemplo:
- Código:
using UnityEngine;
using System.Collections;
public class TagSelectorExample : MonoBehaviour
{
[TagSelector]
public string TagFilter = "";
[TagSelector]
public string[] TagFilterArray = new string[] { };
}
Criando o atributo da propriedade;
- Código:
using UnityEngine;
using UnityEditor;
using System.Collections.Generic;
public class TagSelectorAttribute : PropertyAttribute
{
public bool UseDefaultTagFieldDrawer = false;
}
[CustomPropertyDrawer(typeof(TagSelectorAttribute))]
public class TagSelectorPropertyDrawer : PropertyDrawer
{
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
{
if (property.propertyType == SerializedPropertyType.String)
{
EditorGUI.BeginProperty(position, label, property);
var attrib = this.attribute as TagSelectorAttribute;
if (attrib.UseDefaultTagFieldDrawer)
{
property.stringValue = EditorGUI.TagField(position, label, property.stringValue);
}
else
{
//generate the taglist + custom tags
List<string> tagList = new List<string>();
tagList.Add("<NoTag>");
tagList.AddRange(UnityEditorInternal.InternalEditorUtility.tags);
string propertyString = property.stringValue;
int index = -1;
if (propertyString == "")
{
//The tag is empty
index = 0; //first index is the special <notag> entry
}
else
{
//check if there is an entry that matches the entry and get the index
//we skip index 0 as that is a special custom case
for (int i = 1; i < tagList.Count; i++)
{
if (tagList[i] == propertyString)
{
index = i;
break;
}
}
}
//Draw the popup box with the current selected index
index = EditorGUI.Popup(position, label.text, index, tagList.ToArray());
//Adjust the actual string value of the property based on the selection
if (index == 0)
{
property.stringValue = "";
}
else if (index >= 1)
{
property.stringValue = tagList[index];
}
else
{
property.stringValue = "";
}
}
EditorGUI.EndProperty();
}
else
{
EditorGUI.PropertyField(position, property, label);
}
}
}
Exemplo:(fonte) - http://www.brechtos.com/tagselectorattribute/
Última edição por dstaroski em Qui Dez 20, 2018 6:55 am, editado 1 vez(es) (Motivo da edição : Adicionar Tutorial ao título.)
gilgsjr- Avançado
- PONTOS : 2332
REPUTAÇÃO : 14
Idade : 43
Áreas de atuação : Programador de sistemas Pascal/Delphi "modelador 3D" <--hobie atualmento desenvolvendo jogos oir
Respeito as regras :
NKKF- ProgramadorMaster
- PONTOS : 4819
REPUTAÇÃO : 574
Idade : 20
Áreas de atuação : Desenvolvedor na Unity, NodeJS, React, ReactJS, React Native, MongoDB e Firebase.
Respeito as regras :
Tópicos semelhantes
» Criação de tags para objetos
» [TUTORIAL] GameObject.FindWithTag ( Achar objetos na cena pelas Tags )
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
» [TUTORIAL] Seleçao de personagens no Photon.
» Menu para selecao de cena
» [TUTORIAL] GameObject.FindWithTag ( Achar objetos na cena pelas Tags )
» [TUTORIAL] Introdução para iniciante e tutorial de Click move com raycast
» [TUTORIAL] Seleçao de personagens no Photon.
» Menu para selecao de cena
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos