Наверное, это очень глупый вопрос с очевидным решением, но я буквально понятия не имею, что не так.
Я новичок в Unity и в настоящее время прохожу их путь младшего программиста. У меня есть некоторый опыт программирования в целом, но я никогда раньше не работал на C#. Я в первую очередь самоучка; моим единственным формальным образованием в области компьютерных наук были вводные занятия.
Прямо сейчас я пытаюсь составить список, в котором будут храниться все игровые объекты. Я точно следовал инструкциям, вплоть до того, что буквально скопировал и вставил строку кода, чтобы посмотреть, не пропустил ли я что-нибудь. (Строки, закомментированные в IEnumerator, закомментированы, чтобы я мог попытаться выполнить отладку.)
Я пробовал изменить имя, изменить тип, создать экземпляр указанного списка, но ничего не помогло. Что бы я ни пытался, Unity сообщает мне, что я не могу использовать GetName, кроме как в основном потоке (я понятия не имею, куда я вызываю GetName, поскольку я только объявляю список). Ошибка: UnityException: GetName может быть вызвана только из основного потока. Вот трассировка стека, обычно я читаю их сам, но я не могу разобраться в этом, особенно с областями памяти (я думаю, это то, что есть) вместо файлов:
UnityException: GetName можно вызвать только из основного потока.
Конструкторы и поля инициализаторы будут выполняться из потока загрузки при загрузке сцены.
Не используйте эту функцию в конструкторе или инициализаторах полей, вместо этого переместите код инициализации в функцию Awake или Start.
UnityEngine.Object.GetName() (at :0)
UnityEngine.Object.get_name() (at :0)
UnityEngine.TextCore.Text.FontAsset.ReadFontAssetDefinition () (at :0)
UnityEngine.TextCore.Text.FontAsset.GetCharacterInLookupCache (System.UInt32 Юникод, UnityEngine.TextCore.Text.FontStyles fontStyle, UnityEngine.TextCore.Text.TextFontWeight fontWeight, UnityEngine.TextCore.Text.Character& символ) (at :0)
UnityEngine.TextCore.Text.FontAssetUtilities.GetCharacterFromFontAsset_Internal (Unicode System.UInt32, UnityEngine.TextCore.Text.FontAsset sourceFontAsset, System.Boolean includeFallbacks, UnityEngine.TextCore.Text.FontStyles fontStyle, UnityEngine.TextCore.Text.TextFontWeight fontWeight, System.Boolean& isAlternativeTypeface, System.Boolean populateLigatures) (at :0)
UnityEngine.TextCore.Text.FontAssetUtilities.GetCharacterFromFontAssetsInternal (Unicode System.UInt32, System.Collections.Generic.List`1[T] fontAssets, System.Boolean includeFallbacks, UnityEngine.TextCore.Text.FontStyles fontStyle, UnityEngine.TextCore.Text.TextFontWeight fontWeight, System.Boolean& isAlternativeTypeface, System.Boolean populateLigatures) (at :0)
UnityEngine.TextCore.Text.FontAssetUtilities.GetCharacterFromFontAssetsInternal (Unicode System.UInt32, UnityEngine.TextCore.Text.FontAsset sourceFontAsset, System.Collections.Generic.List`1[T] fontAssets, System.Collections.Generic.List`1[T] OSFallbackList, System.Boolean includeFallbacks, UnityEngine.TextCore.Text.FontStyles fontStyle, UnityEngine.TextCore.Text.TextFontWeight fontWeight, System.Boolean& isAlternativeTypeface, System.Boolean populateLigatures) (at :0)
UnityEngine.TextCore.Text.TextGenerator.GetEllipsisSpecialCharacter (UnityEngine.TextCore.Text.TextGenerationSettings GenerationSettings) (at :0)
UnityEngine.TextCore.Text.TextGenerator.GetSpecialCharacters (UnityEngine.TextCore.Text.TextGenerationSettings генерацияSettings) (at :0)
UnityEngine.TextCore.Text.TextGenerator.PrepareFontAsset (UnityEngine.TextCore.Text.TextGenerationSettingsgenerationSettings) (at :0)
UnityEngine.TextCore.Text.TextHandle.PrepareFontAsset() (at :0)
UnityEngine.UIElements.UITKTextJobSystem+PrepareTextJobData.Execute (индекс System.Int32) (в :0)
Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[T].Execute (T& jobData, System.IntPtr extraPtr, System.IntPtr bufferRangePatchData, Unity.Jobs.LowLevel.Unsafe.JobRanges& диапазоны, System.Int32 jobIndex) (at :0)
Большое спасибо за ответы, вот мой код!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public List targets;
private float spawnRate = 1;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
StartCoroutine(SpawnTarget());
}
IEnumerator SpawnTarget()
{
while(true)
{
yield return new WaitForSeconds(spawnRate);
// int index = Random.Range(0, targets.Count);
// Instantiate(targets[index]);
}
}
}
Подробнее здесь: https://stackoverflow.com/questions/797 ... -exception
Unity C# — создание списка, вызывающего исключение ⇐ C#
Место общения программистов C#
-
Anonymous
1761174170
Anonymous
Наверное, это очень глупый вопрос с очевидным решением, но я буквально понятия не имею, что не так.
Я новичок в Unity и в настоящее время прохожу их путь младшего программиста. У меня есть некоторый опыт программирования в целом, но я никогда раньше не работал на C#. Я в первую очередь самоучка; моим единственным формальным образованием в области компьютерных наук были вводные занятия.
Прямо сейчас я пытаюсь составить список, в котором будут храниться все игровые объекты. Я точно следовал инструкциям, вплоть до того, что буквально скопировал и вставил строку кода, чтобы посмотреть, не пропустил ли я что-нибудь. (Строки, закомментированные в IEnumerator, закомментированы, чтобы я мог попытаться выполнить отладку.)
Я пробовал изменить имя, изменить тип, создать экземпляр указанного списка, но ничего не помогло. Что бы я ни пытался, Unity сообщает мне, что я не могу использовать GetName, кроме как в основном потоке (я понятия не имею, куда я вызываю GetName, поскольку я только объявляю список). Ошибка: [b]UnityException: GetName может быть вызвана только из основного потока.[/b] Вот трассировка стека, обычно я читаю их сам, но я не могу разобраться в этом, особенно с областями памяти (я думаю, это то, что есть) вместо файлов:
UnityException: GetName можно вызвать только из основного потока.
Конструкторы и поля инициализаторы будут выполняться из потока загрузки при загрузке сцены.
Не используйте эту функцию в конструкторе или инициализаторах полей, вместо этого переместите код инициализации в функцию Awake или Start.
UnityEngine.Object.GetName() (at :0)
UnityEngine.Object.get_name() (at :0)
UnityEngine.TextCore.Text.FontAsset.ReadFontAssetDefinition () (at :0)
UnityEngine.TextCore.Text.FontAsset.GetCharacterInLookupCache (System.UInt32 Юникод, UnityEngine.TextCore.Text.FontStyles fontStyle, UnityEngine.TextCore.Text.TextFontWeight fontWeight, UnityEngine.TextCore.Text.Character& символ) (at :0)
UnityEngine.TextCore.Text.FontAssetUtilities.GetCharacterFromFontAsset_Internal (Unicode System.UInt32, UnityEngine.TextCore.Text.FontAsset sourceFontAsset, System.Boolean includeFallbacks, UnityEngine.TextCore.Text.FontStyles fontStyle, UnityEngine.TextCore.Text.TextFontWeight fontWeight, System.Boolean& isAlternativeTypeface, System.Boolean populateLigatures) (at :0)
UnityEngine.TextCore.Text.FontAssetUtilities.GetCharacterFromFontAssetsInternal (Unicode System.UInt32, System.Collections.Generic.List`1[T] fontAssets, System.Boolean includeFallbacks, UnityEngine.TextCore.Text.FontStyles fontStyle, UnityEngine.TextCore.Text.TextFontWeight fontWeight, System.Boolean& isAlternativeTypeface, System.Boolean populateLigatures) (at :0)
UnityEngine.TextCore.Text.FontAssetUtilities.GetCharacterFromFontAssetsInternal (Unicode System.UInt32, UnityEngine.TextCore.Text.FontAsset sourceFontAsset, System.Collections.Generic.List`1[T] fontAssets, System.Collections.Generic.List`1[T] OSFallbackList, System.Boolean includeFallbacks, UnityEngine.TextCore.Text.FontStyles fontStyle, UnityEngine.TextCore.Text.TextFontWeight fontWeight, System.Boolean& isAlternativeTypeface, System.Boolean populateLigatures) (at :0)
UnityEngine.TextCore.Text.TextGenerator.GetEllipsisSpecialCharacter (UnityEngine.TextCore.Text.TextGenerationSettings GenerationSettings) (at :0)
UnityEngine.TextCore.Text.TextGenerator.GetSpecialCharacters (UnityEngine.TextCore.Text.TextGenerationSettings генерацияSettings) (at :0)
UnityEngine.TextCore.Text.TextGenerator.PrepareFontAsset (UnityEngine.TextCore.Text.TextGenerationSettingsgenerationSettings) (at :0)
UnityEngine.TextCore.Text.TextHandle.PrepareFontAsset() (at :0)
UnityEngine.UIElements.UITKTextJobSystem+PrepareTextJobData.Execute (индекс System.Int32) (в :0)
Unity.Jobs.IJobParallelForExtensions+ParallelForJobStruct`1[T].Execute (T& jobData, System.IntPtr extraPtr, System.IntPtr bufferRangePatchData, Unity.Jobs.LowLevel.Unsafe.JobRanges& диапазоны, System.Int32 jobIndex) (at :0)
Большое спасибо за ответы, вот мой код!
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class GameManager : MonoBehaviour
{
public List targets;
private float spawnRate = 1;
// Start is called once before the first execution of Update after the MonoBehaviour is created
void Start()
{
StartCoroutine(SpawnTarget());
}
IEnumerator SpawnTarget()
{
while(true)
{
yield return new WaitForSeconds(spawnRate);
// int index = Random.Range(0, targets.Count);
// Instantiate(targets[index]);
}
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79797282/unity-c-sharp-creating-a-list-causing-exception[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия