Пробую создать объект из меню:
GameObject obj;
void CreateObject() {
obj = new GameObject("TEST");
}
[MenuItem("Test/Create new object")]
private static void CreateObjectMenuItem() {
CreateObject();
}
Однако получаю ошибку:
error CS0120: An object reference is required for the non-static field, method, or property 'Test.CreateObject()'
Подскажите пожалуйста, как решить эту проблему?
В ООП что бы использовать метод какого-то класса, должен существовать какой-то инициализированный экземпляр этого класса или метод должен быть статичным и использовать статичные поля.
Что касается Unity, в момент использования созданного Вами пункта меню "Test/Create new object" не гарантируется наличие экземпляра Вашего класса. Поэтому (учитывая приведенный код) и сам класс, и все в нем методы и поля должны быть с модификатором static
.
Не зная, что должно еще происходить с созданным объектом, могу предолжить такой код:
using UnityEditor;
using UnityEngine;
public static class TestUtils
{
private static GameObject obj;
private static void CreateObject()
{
obj = new GameObject("TEST");
}
[MenuItem("Test/Create new object")]
private static void CreateObjectMenuItem()
{
CreateObject();
}
}
Это при условии, что нет необходимости неследования от MonoBehaviour
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Написал шейдер который должен делать эффект тумана в дали, но он не работаетВ чём может быть причина?
Мне необходимо подсчитать ссылки на объект, и если осталась только 1, то удалить егоДело в том, что все объекты хранятся в словаре:
в чем может быть проблема? Есть 2 таблицы ContractCity и ContractManagerЯ хочу промаппить в Messaging