Модификатор члена единицы public должен предшествовать - PullRequest
0 голосов
/ 31 мая 2018

Я уже почти исправил эту проблему, но когда дело стало еще более безумным, я понял, насколько глупо было пытаться достичь этого, поскольку в итоге это явно не принесло пользы.

Не стесняйтесь просматривать это все ещеесли у вас возникла похожая проблема, возможно, вы узнаете одну или две вещи.Idk ¯ \ _ (ツ) _ / ¯

Люди спрашивали об этом до меня на этом сайте, но ни один из них на самом деле не та же проблема. Я уверен, что я, вероятно, пропустилчто-то, когда я проверил свой код, но я не могу понять, что это такое.Теперь Unity беспокоит меня, якобы не помещая модификатор public в нужное место, даже если это именно то, что должно быть, из того, что я вижу.

Позвольте мне показать вам по-настоящемубыстрый ...


Ошибка Unity возвращает мне:

Assets\saveFiles.cs(15,1): error CS1585: Member modifier 'public' must precede the member type and name

Мой код (явроде как безумно публиковать этот длинный кусок здесь, просто игнорируйте те комментарии, которые я, очевидно, слишком ленив, чтобы удалить. Это для того, когда я продолжаю развиваться.)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
using System.IO;
using System.Windows.Forms;
using System.Runtime.InteropServices;
using System.Drawing;
using System.Security.Permissions; // Allows permission requests from within         script. VERY IMPORTANT.
using System.Security.AccessControl; // Also as important for the same reason.

[ComVisibleAttribute(true)]
public sealed class FileIOPermission{}(AllAccess View, string MyDocuments) // Grants access to the User's Documents folder.

public class saveFiles : MonoBehaviour {
    [DllImport("System.Windows.Forms.dll")]
    private static extern void SystemWindows();
    [DllImport("System.Drawing.dll")]
    private static extern void SystemDrawing();

    public string MyDocuments = System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) );

    // Reserve these variables for save file memory.
        public string UserData;
        public string UserConfig;
        public bool IsUserAvailable;

    void Start () {
        // On game execution, check for the game's configuration files. Load if they exist, save blank ones if they don't.
        // (Don't save in the Steam client's user data directory until you are aware of a way to find which user is logged into Steam.)

    // Check for saved progress and load it into memory if available. If not, it creates one and prepares it for editing.
        if(System.IO.File.Exists(System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) ) + "/SaveData/tanky bois/" + "user.sav") == true) {
            UserData = System.IO.File.ReadAllText(System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) ) + "/SaveData/tanky bois/" + "user.sav");
        } else {
            System.IO.File.Create(System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) ) + "/SaveData/tanky bois/" + "user.sav");
            UserData = "statsA{\"xp\" : 0, \"money\" : 2000, \"MatchInProgress\" : false} Inventory{\"Default\":1;} loadout{1 null null null null}";
            System.IO.File.WriteAllText(System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) ) + "/SaveData/tanky bois/" + "user.sav", UserData);
            // Rules for UserData string:
            //      Inventory is stored as: "[ItemTag string]:[QuantityOfItem integer];"
            //
            //    Optionally, you can add extra info about the item from within a parentheses, placed after [ItemTag]. Useful for upgrades and equipment, leveling up, etc.
            //     (e.g. "Default(  [JSON METADATA]  ):1;")
            //
            //      Anything in quotes is a string, otherwise it is an integer or a boolean value depending on the returned value.
            //  (e.g. 24 as an integer, true/false/null as a boolean)
            //
            //      Loadout section is stored as 5 different inventory slot numbers, seperated by spaces.
            //  Each number represents which item listing, counting from the start to the end of the Inventory string.
            //  (e.g. "Inventory{weaponA:1;weaponB:1;weaponC:1;weaponD:1;} loadout{1 3 4 null null}" 
            //  will return WeaponA in slot 1, weaponC in slot 2, weaponD in slot 3, and slots 4 and 5 empty)
            //
            //      Majority of user save data will use JSON format or one of a similar syntax.
            //      (This applies to pretty much 100% of the settings file.)
        }

    // Check for user settings and load it into memory if available. If not, it creates one and prepares it for editing.
        if(System.IO.File.Exists(System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) ) + "/SaveData/tanky bois/" + "cfg") == true){
            UserConfig = System.IO.File.ReadAllText(System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) ) + "/SaveData/tanky bois/" + "cfg");
        } else {
            System.IO.File.Create(System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) ) + "/SaveData/tanky bois/" + "cfg");
        };
    }
    public void saveUsr() {
        // Code for Windows Standalone:
        System.IO.File.WriteAllText(System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) ) + "/SaveData/tanky bois/" + "user.sav", UserData);
        System.IO.File.WriteAllText(System.Environment.GetFolderPath( (System.Environment.SpecialFolder.MyDocuments) ) + "/SaveData/tanky bois/" + "cfg", UserConfig);
    }

}

Так что в этой ситуации, вот почемуUnity начинает сходить с ума, прося меня добавить "public" модификатор, где он уже есть?

И если я что-то пропустил, дайте мне знать.

Спасибо.

1 Ответ

0 голосов
/ 01 июня 2018

Давайте переформатируем ваш код, чтобы его было легче читать:

....
[ComVisibleAttribute(true)]
public sealed class FileIOPermission
{
}

(AllAccess View, string MyDocuments) // Grants access to the User's Documents folder.

public class saveFiles : MonoBehaviour {
....

Вы видите проблему сейчас?

(AllAccess View, string MyDocuments) нет ни в одном классе, поэтому компилятор пытаетсявыясните, что это значит, и он думает, что вы пытаетесь объявить класс, интерфейс или перечисление, и лучше всего предположить, что вам не хватает модификатора.

мне кажется, что вы скопировали ивставил эту строку по ошибке откуда-то еще.Вы должны удалить его.

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