Как отобразить содержимое EditorGUILayout.PropertyField в текстовое поле?

Да, это законно, доступность проверяется статически (не динамически):

class A {
public:
    virtual void foo() = 0;
private:
    virtual void bar() = 0;
};

class B : public A {
private:
    virtual void foo() {} // public in base, private in derived
public:
    virtual void bar() {} // private in base, public in derived
};

void f(A& a, B& b)
{
    a.foo(); // ok
    b.foo(); // error: B::foo is private
    a.bar(); // error: A::bar is private
    b.bar(); // ok (B::bar is public, even though A::bar is private)
}

int main()
{
    B b;
    f(b, b);
}

Теперь, зачем вы хотите это сделать? Это имеет значение только при непосредственном использовании производного класса B (второй параметр f()), а не через базовый интерфейс A (первый параметр f()). Если вы всегда используете абстрактный A интерфейс (как я бы рекомендовал в целом), он по-прежнему соответствует режиму «IS-A».

0
задан derHugo 24 February 2019 в 10:13
поделиться

1 ответ

Не могли бы вы просто добавить открытое строковое поле в класс?

Оно будет отображаться в Инспекторе, где вы можете сделать ввод и затем присвоить это строковое значение hintText.text. [ 114]

Если вы используете настраиваемые ящики Inspector для создания некоторых нестандартных, сложных структур, рассмотрите возможность создания отдельного не-MonoBehaviour класса с желаемой структурой и используйте атрибут System.Serializable, чтобы сделать объекты класса видимыми в Inspector. Вот так:

https://docs.unity3d.com/ScriptReference/Serializable.html

0
ответ дан Vladimir Lymar 24 February 2019 в 10:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: