Как исправить исключение TypeLoadException с помощью кнопки интерфейса пользователя в Google Sheets? - PullRequest
0 голосов
/ 05 февраля 2019

Я настраиваю кнопку пользовательского интерфейса в Unity, чтобы добавить информацию в таблицу Google.Но я получаю «TypeLoadException», когда я нажимаю его во время выполнения.Я не знаю, как это исправить.

В Unity (C #) я пытаюсь создать кнопку пользовательского интерфейса, которая будет взаимодействовать с электронной таблицей Google с помощью API Google Sheets v4.Однако я получаю следующую ошибку:

TypeLoadException: Could not find method due to a type load error
UnityEngine.Events.InvokableCall.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent.cs:166)
UnityEngine.Events.UnityEvent.Invoke () (at C:/buildslave/unity/build/Runtime/Export/UnityEvent_0.cs:58)
UnityEngine.UI.Button.Press () (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:66)
UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/UI/Core/Button.cs:108)
UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:50)
UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction`1[T1] functor) (at C:/buildslave/unity/build/Extensions/guisystem/UnityEngine.UI/EventSystem/ExecuteEvents.cs:261)
UnityEngine.EventSystems.EventSystem:Update()

Мне кажется, что это проблема Unity, а не мой личный код, но я не уверен.В случае, если это решение, код выглядит следующим образом:

public void AddToDatabase() {

        string json;
        string discipline = GameObject.Find("DisciplineButton").transform.GetChild(0).GetComponent<Text>().text;
        string title = GameObject.Find("TitleButton").transform.GetChild(0).GetComponent<Text>().text;
        string training = "[\"" + string.Join("\", \"", GameObject.Find("EventSystem").GetComponent<DisciplineList>().chosenTraining.ToArray()) + "\"]";
        string start = GameObject.Find("StartDateButton").transform.GetChild(0).GetComponent<Text>().text;
        string end = GameObject.Find("EndDateButton").transform.GetChild(0).GetComponent<Text>().text;
        string availability = GameObject.Find("TimeText").GetComponent<Text>().text;
        if (availability == "Part-Time") {
            string days = DPW.GetComponent<Text>().text;
            string hours = HPD.GetComponent<Text>().text;
            json = "[{\"discipline\":\"" + discipline + "\",\"title\":\"" + title + "\",\"training\":\"" + training + "\",\"startDate\":\"" + start + "\",\"endDate\":\"" + end + "\",\"availability\":\"" + availability + "\",\"DPW\":\"" + days + "\",\"HPD\":\"" + hours + "\"}]";
        } else {
            json = "[{\"discipline\":\"" + discipline + "\",\"title\":\"" + title + "\",\"training\":\"" + training + "\",\"startDate\":\"" + start + "\",\"endDate\":\"" + end + "\",\"availability\":\"" + availability + "\"}]";
        }

        object data = "";
        JsonUtility.FromJsonOverwrite(json, data);

        SheetsService sheetsService = new SheetsService(new BaseClientService.Initializer {
            HttpClientInitializer = GetCredential(),
            ApplicationName = "Google-SheetsSample/0.1",
        });

        // The ID of the spreadsheet to update.
        string spreadsheetId = "value";  // TODO: Update placeholder value.

        // The A1 notation of a range to search for a logical table of data.
        // Values will be appended after the last row of the table.
        string range = "A2:K";  // TODO: Update placeholder value.

        // How the input data should be interpreted.
        SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum valueInputOption = (SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum)2;  // TODO: Update placeholder value.

        // How the input data should be inserted.
        SpreadsheetsResource.ValuesResource.AppendRequest.InsertDataOptionEnum insertDataOption = (SpreadsheetsResource.ValuesResource.AppendRequest.InsertDataOptionEnum)1;  // TODO: Update placeholder value.

        // TODO: Assign values to desired properties of `requestBody`:
        Data.ValueRange requestBody = new Data.ValueRange {
            MajorDimension = "COLUMNS",
            Range = "A2:K",
            Values = (IList<IList<object>>)data
        };

        SpreadsheetsResource.ValuesResource.AppendRequest request = sheetsService.Spreadsheets.Values.Append(requestBody, spreadsheetId, range);
        request.ValueInputOption = valueInputOption;
        request.InsertDataOption = insertDataOption;

        // To execute asynchronously in an async method, replace `request.Execute()` as shown:
        Data.AppendValuesResponse response = request.Execute();
        // Data.AppendValuesResponse response = await request.ExecuteAsync();

        // TODO: Change code below to process the `response` object:
        Console.WriteLine(JsonConvert.SerializeObject(response));

    }

Я попытался переустановить API и начать с инструкций, приведенных на странице API Google Sheet, но ни одна из них не привела к решению моей проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...