Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/29: Рейтинг темы: голосов - 29, средняя оценка - 4.66
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 199

Записать имя сцены в переменную

07.06.2018, 08:47. Показов 5919. Ответов 8

Студворк — интернет-сервис помощи студентам
Добрый день уважаемые форумчане!

Столкнулся с небольшой проблемой. Мне нужно записать имя текущей сцены в переменную, чтобы потом записать ее в PlayerPrefs. Использую этот код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
 
public class SaveGame : MonoBehaviour {
 
    // Use this for initialization
 
    Scene scene = SceneManager.GetActiveScene();
 
    void Start () {
    
 
    }
 
 
    // Update is called once per frame
    void Update () {
        PlayerPrefs.SetString ("LostLevel", scene);
 
    }
}
Получаю ошибку: Assets/scripts/SaveGame.cs(14,39): error CS1503: Argument `#2' cannot convert `UnityEngine.SceneManagement.Scene' expression to type `string'
и
Assets/scripts/SaveGame.cs(14,15): error CS1502: The best overloaded method match for `UnityEngine.PlayerPrefs.SetString(strin g, string)' has some invalid arguments

Как сконвертировать имя сцены в стринг переменную?

Заранее благодарю.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.06.2018, 08:47
Ответы с готовыми решениями:

Записать имя файла в переменную
Здравствуйте, Возможно ли, вместо того , чтобы использовать SAD.open("Batch.cmd") ofstream SAD; SAD.open(...

Открытие файла через OpenFileDIalog и записать имя файла в переменную
Можно ли в формах Pascal ABC Net, открыв файл через openfiledialog, записать в строковую переменную полное имя файла?

Записать день в переменную d,месяц в переменную m, год в переменную y
Как можно получить системную дату? Мне надо записать день в переменную d,месяц в переменную m, год в переменную y Заранее Спасибо!

8
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
07.06.2018, 09:28
lemuriec,
C#
1
SceneManager.GetActiveScene().name;
0
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 199
07.06.2018, 09:37  [ТС]
f3hler, Спасибо конечно. Но все равно выдает ошибку. Как перевести имя в тип String? Я еще не очень в C# секу.
0
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
07.06.2018, 09:54
C#
1
string lname = SceneManager.GetActiveScene().name;
0
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 199
07.06.2018, 12:04  [ТС]
f3hler, Assets/scripts/SaveGame.cs(8,31): error CS0119: Expression denotes a `method group', where a `variable', `value' or `type' was expected

Код:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
 
public class SaveGame : MonoBehaviour {
 
    string scName = SceneManager.GetActiveScene.name;
 
    void Start () {
        
        PlayerPrefs.SetString ("LostLevel", scName);
 
    }
 
 
    // Update is called once per frame
    void Update () {
        
 
    }
}
Добавлено через 58 минут
Все. Нашел ошибку. Забыл закрывающиеся скобки GetActiveScene - > GetActiveScene().

Спасибо проблема решена.

Добавлено через 1 час 6 минут
А нет. Не решена.

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.SceneManagement;
 
public class SaveGame : MonoBehaviour {
 
    string scName = SceneManager.GetActiveScene().name;
 
    void Start () {
        
        PlayerPrefs.SetString ("LostLevel", scName);
 
    }
 
 
    // Update is called once per frame
    void Update () {
        
 
    }
}
INTERNAL_CALL_GetActiveScene is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour 'SaveGame' on game object 'SaveGame'.
See "Script Serialization" page in the Unity Manual for further details.
UnityEngine.SceneManagement.SceneManager :GetActiveScene()
SaveGame:.ctor() (at Assets/scripts/SaveGame.cs:8)
UnityEditorInternal.InternalEditorUtilit y:HierarchyWindowDrag(HierarchyProperty, Boolean, HierarchyDropMode)
UnityEngine.GUIUtility:ProcessEvent(Int3 2, IntPtr)

и

UnityException: INTERNAL_CALL_GetActiveScene is not allowed to be called from a MonoBehaviour constructor (or instance field initializer), call it in Awake or Start instead. Called from MonoBehaviour 'SaveGame' on game object 'SaveGame'.
See "Script Serialization" page in the Unity Manual for further details.
UnityEngine.SceneManagement.SceneManager .GetActiveScene () (at C:/buildslave/unity/build/artifacts/generated/common/runtime/SceneManagerBindings.gen.cs:37)
SaveGame..ctor () (at Assets/scripts/SaveGame.cs:8)
UnityEditorInternal.InternalEditorUtilit y:HierarchyWindowDrag(HierarchyProperty, Boolean, HierarchyDropMode)
UnityEngine.GUIUtility:ProcessEvent(Int3 2, IntPtr)
0
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
07.06.2018, 13:51
Лучший ответ Сообщение было отмечено lemuriec как решение

Решение

переместите 8 строку на 11 позицию
1
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 199
07.06.2018, 18:18  [ТС]
f3hler, Спасибо большое) Но можно еще немного Вас побеспокоить... Вы можете объяснить почему код заработал именно так?
0
136 / 131 / 43
Регистрация: 07.11.2017
Сообщений: 553
07.06.2018, 18:27
lemuriec, ученной степени нету, но попробую обьяснить по простому.
в данном случае нельзя было вызывать
C#
1
SceneManager.GetActiveScene()
в месте обьявления переменных.
Цитата Сообщение от lemuriec Посмотреть сообщение
is not allowed to be called from a MonoBehaviour constructor (or instance field initializer)
желательно это делать в конструкторе/методе, что оно и предложило вам
Цитата Сообщение от lemuriec Посмотреть сообщение
call it in Awake or Start
иногда просто нужно читать что пишут, а не алярму кричать сразу.
1
11 / 11 / 2
Регистрация: 30.03.2010
Сообщений: 199
07.06.2018, 18:45  [ТС]
f3hler, Спасибо большое. Этот вопрос закрыт)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.06.2018, 18:45
Помогаю со студенческими работами здесь

Передать имя файла в переменную, если имя каждый раз уникальное и содержит маску
Добрый день. В виду отсутствия информации в поиске, прошу помочь с вопросом по batch. Как передать имя файла в переменную, если имя...

Процедуры: записать в переменную А минимальное из значений А и В, а в переменную В - максимальное
Описать процедуру minmax (a,b) что записывает в переменную А минимальное из значений А и В, а в переменную В - максимальное из этих...

Переменную из цикла в js записать в переменную php
Есть цикл на JS for (glavnoe = 0;glavnoe<=3;glavnoe++){ код js код php } нужно,в переменную $n вписать значение glavnoeкаждый...

Выдрать имя файла в переменную
В обще надо сделать батник который найдёт файл *.sln и если он единственный, то занести его содержимое в переменную %DN%. echo off rem...

Имя макроса через переменную
Есть динамический список с именами макросов в комбобоксе. Хотелось бы , чтобы при выборе значения из списка запускался одноименный макрос....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru