Пробую создать объект из меню:
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
Продвижение своими сайтами как стратегия роста и независимости