Мне удалось заставить его работать так, как я хотел. Это может быть не лучшее решение, но оно работает для моих потребностей прямо сейчас.
Это все еще продолжается, и многое еще нужно изменить, но на данный момент функция поиска работает с поддержкой ключевых слов.
Благодаря тем из вас, кто быстро реагирует :)
Для тех, кто ищет, чтобы сделать то же самое, вот некоторый код:
FormulaClass:
#pragma strict
import System.Collections.Generic;
public class Formula
{
var name : String;
var formula : Texture2D;
var example : Texture2D;
//This is where i put all the words i can search for,
//to find this particular object.
var keywords : List.<String> = new List.<String>();
}
FormulaContainer:
#pragma strict
import System.Collections.Generic;
var formulas : List.<GameObject> = new List.<GameObject>();
private var myTransform : Transform;
function Start()
{
myTransform = transform;
formulas.Add(Resources.Load("Formulas/Pythagoras", GameObject));
formulas.Add(Resources.Load("Formulas/Test2", GameObject));
formulas.Add(Resources.Load("Formulas/Test3", GameObject));
}
function Search (searchWord : String) : GameObject
{
var searchResult : GameObject;
var formulaScript : FormulaScript;
for (var formula : GameObject in formulas)
{
formulaScript = formula.GetComponent(FormulaScript);
for (var keyword : String in formulaScript.formulaClass.keywords)
{
if (keyword == searchWord)
{
searchResult = formula;
}
}
}
return searchResult;
}
Формула:
#pragma strict
var formulaClass : Formula;
private var myTransform : Transform;
function Start()
{
myTransform = transform;
formulaClass.name = myTransform.name;
formulaClass.formula = Resources.Load("Images/" + myTransform.name, Texture2D);
formulaClass.example = Resources.Load("Images/" + myTransform.name + "Example", Texture2D);
}
UI:
#pragma strict
private var myTransform : Transform;
private var currentFormula : GameObject;
private var currentInstanceFormula : GameObject;
private var size : Vector2;
private var offset : int = 25;
private var searchField : String = "";
private var container : FormulaContainer;
function Start()
{
myTransform = transform;
container = myTransform.GetComponent(FormulaContainer);
size.x = Screen.width - offset * 2;
size.y = Screen.height - offset * 2;
}
function OnGUI()
{
GUI.BeginGroup (new Rect (offset, offset, size.x, size.y));
GUI.Box (new Rect (0, 0, size.x, size.y), "");
searchField = GUI.TextField (Rect (25, 25, 100, 25), searchField);
if (GUI.Button (Rect (130, 25, 65, 25), "Search"))
{
currentFormula = container.Search(searchField);
if (currentInstanceFormula)
{
Destroy(currentInstanceFormula);
}
if (currentFormula)
{
Debug.LogWarning ("found " + currentFormula.transform.name + " during the search");
var newInstance : GameObject = Instantiate (currentFormula, myTransform.position, myTransform.rotation);
currentInstanceFormula = newInstance;
newInstance.transform.name = currentFormula.transform.name;
}
else
{
Debug.LogWarning ("Nothing was found during the search");
}
}
if (currentInstanceFormula)
{
var formulaScript : FormulaScript;
var name : String;
var formula : Texture2D;
var example : Texture2D;
formulaScript = currentInstanceFormula.GetComponent(FormulaScript);
name = formulaScript.formulaClass.name;
formula = formulaScript.formulaClass.formula;
example = formulaScript.formulaClass.example;
GUI.Label (new Rect (25, 75, 100, 25), name);
GUI.DrawTexture (new Rect (100, 150, 256, 64), formula);
GUI.DrawTexture (new Rect (450, 150, 512, 256), example);
}
GUI.EndGroup();
}
Это совершенно непонятно мне, что вы просите. Unity3D для игр, но у меня такое чувство, что ваша система _search_ не входит в игру. Также покажите код. – Virtlink
Извините. Это не совсем игра, но она создана внутри Unity3D. Я создаю программу, в которой у меня есть некоторые объекты, хранящиеся в списке. И чтобы получить их, у меня есть текстовое поле gui, используемое для поиска моего списка для объекта, который я хочу. Теперь, что я хочу, для этого объекта есть определенные ключевые слова, привязанные к нему, так что вместо того, чтобы вводить все слово, например, для eksample «Pythagoras», мне нужно было бы набирать «pyt» или «pyta» –
вы включаете некоторые минимальные примеры сценариев. Если вы имеете в виду, что хотите его в редакторе, я бы предположил, что вы хотите сделать собственный редактор – deinonychusaur