2013-08-16 2 views
0

Я новичок в программировании, и у меня есть этот скрипт, который я создаю, он выполняет функцию, которая читает XML-файлы на основе вашего ввода, я просто столкнулся с этой проблемой, хотя я не могу доступ к переменной с именем «XMLtext», она общедоступна, может кто-то сказать мне, что я делаю неправильно, и объяснить это, я пробовал разные вещи.Имея простые трудности с инкапсуляцией

using UnityEngine; 
using System.Collections.Generic; 
using System.Xml.Linq; 
using System.Linq; 
using System.Collections; 

public class Data : MonoBehaviour { 
    public TextAsset XMLtext; 

    void Main() { 

    } 

    public static string XMLread (params string[] no) { 
     var XMLfile = XDocument.Parse(); 
     var a = Data.XMLfile.Element ("data"); 

     for (int i = 0; no[i] == null; i++) { 

     } 
    } 
} 
+0

Извините, я должен был упомянуть, что переменная XMLtext будет находиться в «var XMLfile = XDocument.Parse (XMLtext.text); – user2690614

+0

Не является ли XMLText зарезервированным словом рамки единства? Просто гадать .. – CaveCoder

+0

Ну, теперь я чувствую себя идиотом, мне удалось решить проблему, используя «статическую» перед декларацией, даже если я пробовал это раньше, и это не сработало. Ну, может, кто-то будет достаточно любезен, чтобы объяснить, почему ему нужен статический префикс для доступа? – user2690614

ответ

0

Проблема заключается в том, что ваш класс Data, которому принадлежит поле XMLtext, является классом экземпляра. Ваш метод XMLread является статическим, то есть он разделяется во всех экземплярах Data. Чтобы решить вашу проблему, сделайте статический XMLText или сделайте XMlread методом экземпляра, удалив статическое ключевое слово.

0

Проблема заключается в том, что ваш XMLtext поле принадлежит к экземпляру Data, в то время как ваш метод XMLread является static, поэтому он относится к классу Data. Вероятно, вы просто хотите удалить static от XMLread, так что вы всегда в одном экземпляре Data.

Смежные вопросы