2016-03-18 2 views
4

J'ai écrit du code pour mon jeu qui doit exécuter une fonction de mon code python. J'utilise Ironpython pour mon projet. Cependant, quand je suis en train d'utiliser C# typage dynamique pour appeler une fonction dans le code ci-dessous, il compile, mais je reçois l'erreur suivante des Internes:Utilisation du typage dynamique C# dans Unity 5.3.1f

"Actifs/Scripts/WordSearchAlgorithm.cs (37, 29): erreur CS1502:. Le match de la meilleure méthode surchargée pour
System.Runtime.CompilerServices.CallSite, objet >> Créer (System.Runtime.CompilerServices.CallSiteBinder) » a quelques arguments non valides ""
Actif/Scripts /WordSearchAlgorithm.cs(37,29): erreur CS1503: Argument
'# 1' ne peut pas convertir l'expression 'objet' en type
'System.Runtime.CompilerServices.CallSiteBinder' ""
Actif/Scripts/WordSearchAlgorithm.cs (37,61): erreur CS0234: Le type
ou le nom d'espace de noms 'RuntimeBinder' n'existe pas dans l'espace de noms
`Microsoft .CSharp '. Vous manquez une référence d'assemblage? "
Actif/Scripts/WordSearchAlgorithm.cs (37,61): erreur CS1502: Le meilleur match de
méthode surchargée pour 'System.Runtime.CompilerServices.CallSite> .Create (System.Runtime.CompilerServices.CallSiteBinder)' a un certain arguments invalides

Je pense que mono ne supporte pas. Pourriez-vous s'il vous plaît me donner une solution pour me aider?

static public void StartSearchAlgorithm() 
{ 
    List <string> myList = new List <string>() 
    { 
     "fxie", 
     "amlo", 
     "ewbx", 
     "astu" 
    }; 
    var ironPythonRuntime = Python.CreateRuntime(); 
    try 
    { 
     //Load the Iron Python file/script into the memory 
     //Should be resolve at runtime 
     dynamic loadIPython = ironPythonRuntime.UseFile("C:/py.py"); 
     //Invoke the method and print the result 
     loadIPython.BoggleWords(myList, loadIPython.MakeTrie("C:/words.txt")); // here is my problem to calling function from python that unity logError 
     // Debug.Log(string.Format("dd", loadIPython.BoggleWords(myList, loadIPython.MakeTrie("C:/words.txt")))); 
    } 
    catch (FileNotFoundException ex) 
    {} 
} 

Répondre

2

Unity utilise la version mono 2.0 de .NET, qui est similaire à. NET 3.5 dynamic a été introduit en .NET 4.0, donc Unité ne sera probablement pas c ompile.

Il est possible de remplacer le sous-système Mono 2.0 par Mono 2.0 dans les paramètres du lecteur, mais je ne sais pas si cela prend en charge dynamic. Au moins, vous pouvez essayer.

enter image description here

+0

Je suis en train de changer Mono 2.0 sous Mono 2.0 complète dans les paramètres du lecteur mais l'erreur existe encore –

+0

Ensuite, il est pas pris en charge Mono 2.0. Voir aussi cette réponse: http://answers.unity3d.com/questions/686244/using-c-dynamic-typing-with-unity-434f1.html – Marnix

+0

Merci Marnix pour votre réponse, j'avais déjà vu ce sujet mais comme le code au dessus. Je veux appeler ma fonction Python qui sans utiliser le typage dynamique C# ne fonctionne pas. Je ne sais pas peut-être devrait changer mon codage –