2013-12-08 2 views
3

제 질문에 대한 답변은 아직까지 나오지 않았습니다. Unity를 사용하여 Windows Phone 8 용 앱을 만들고 사용자의 입력을 받아 코드로 실행하고 싶습니다. 이제는 보통 JavaScript를 사용하여 eval ("code here")을 사용할 수 있지만 Unity는 그 점을 좋아하지 않고 eval()이 내 타겟 (WP8)에 허용되지 않는다고 말합니다.유니티 스크립트 나 Unity와의 C#의 Eval() 대체

그래서 내 질문은 - eval()을 사용하지 않고 C# 또는 UnityScript에서 코드를 문자열로 실행할 수 있으며 창에 의존하거나 스크립트를 문서에 첨부하지 않고도 기본적으로 Unity와 작동합니다.

예를 들어, 내가 eval을 사용할 수 있다면 다음과 같이 할 것입니다. eval ("createCuboid (0, 1, 2)");

도움 주셔서 감사합니다.

편집 : 그래서 사용자가 GUI.TextField에서 한 줄의 코드를 입력 할 수있는 앱을 만들고 있습니다. 사용자가 버튼을 클릭하면 코드가 생성되어 실행됩니다. 내 예제에서는 createCuboid (0, 1, 2) 매개 변수에 표시된대로 사용자의 사양 입방체를 만드는 내 자신의 기능이 있습니다.

내가 원하는 이유는 사용자가 좀 더 제한된 작업을 수행하지 않고도 3D 환경을 자유롭게 조작 할 수 있기를 원하기 때문입니다. 예를 들어 createCuboid가있는 버튼을 누른 다음 매개 변수를 입력해야하는 등의 이유가 있습니다. 여러 분야에서. 사용자가 환경을 조작하기 위해 호출 할 수있는 여러 기능이 있습니다.

도움이 되었습니까?

+0

해결하려는 문제에 대해 조금 더 게시 할 수 있습니까? 왜냐하면 당신은 이것을해서는 안되며 완전히 잘못된 방향으로 뭔가가 가고있는 것처럼 들립니다. –

+0

내가 아는 한, C#은 그런 것을 제공하지 않는다. 매개 변수를 파싱하고 리플렉션을 사용하여 모든 것을 설정하는 독자적인 인터프리터를 작성할 수는 있지만 많은 작업이 될 수 있습니다 (잠재적으로 매우 위험 할 수 있음). –

+0

자바 스크립트는 무엇입니까? 나는 C#에서 그렇게하는 것이 불가능하다는 결론에 도달했습니다. – user1785715

답변

1

사용자가 코드를 작성해야하는 이유는 무엇입니까? 그것은 매우 위험합니다. 사용자가 런타임에 오브젝트 (큐브와 같은)를 작성할 수있게하려면 사용자가 작성하고자하는 것을 선택하게하고 필드를 사용하여 함수 매개 변수를 가져오고 (여기에도 올바른지 확인하십시오.) 오브젝트를 작성하십시오.

아마 같은 :

List<Cubes> cubes = new List<Cubes>(); 
int create = /* read */; 
switch (create) 
{ 
    case 0: { 
     int x = /* ask for x */ 
     int y = /* ask for y */ 

     cubes.Add(createCuboid(x, y, 0)); 
     break; 
    } 

    /* etc */ 
} 

당신이 사용자가 목록에서 얻을 및 삭제, 큐브를 삭제할 수 있도록합니다

. 그리고 .. 네,이 코드는 단지 내가하고 싶은 말을 분명히하기위한 것입니다.

+0

감사합니다! 그게 더 좋은 생각입니다. – user1785715

+0

아직도 사람들은 mod-pack을 사용하여 게임을 moddable로 만들어 코드 해킹/코드 삽입을 선호합니다. 어떻게? –