Unity C# — создание списка, вызывающего исключениеC#

Место общения программистов C#
Ответить
Anonymous
 Unity C# — создание списка, вызывающего исключение

Сообщение Anonymous »

Наверное, это очень глупый вопрос с очевидным решением, но я буквально понятия не имею, что не так.

Я новичок в 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»