내가 원하는대로 작동하도록 관리했습니다. 그것은 최선의 해결책은 아닐지 모르지만, 지금은 내 필요에 부합합니다.
이 작업은 아직 진행 중이며 아직 많은 사항을 변경해야하지만 현재는 키워드 지원으로 검색 기능이 작동합니다.
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