Код: Выделить всё
private void OnGUI()
{
if (basicTextilePreset.Count != 5)
{
LoadBasic();
}
if (material != null)
{
if (material != _nowMaterial)
{
SaveOriginalValues();
_nowMaterial = material;
_nowTextileType = TextileType;
Select();
}
if (material == _nowMaterial)
{
if (TextileType != _nowTextileType)
{
_nowTextileType = TextileType;
Select();
}
else
{
ChangeMaterialDynamically();
}
}
}
if (material == null && _nowMaterial != null)
{
_nowMaterial = null;
originalTextilePreset = null;
}
}
введите здесь описание изображения.
Как видите, этот скрипт настраивает значения и цвет (метод ChangeMaterialDynamically) при вызове OnGUI. Насколько я знаю, OnGUI вызывается для обработки и обработки событий графического интерфейса. Поэтому я подумал, что корректировка стоимости материала с помощью этого инспектора скриптов покажет результат сразу, как только я что-то откорректирую.
Но его результат не отображается сразу. Он отображается только после наведения курсора на вид сцены или вид игры, если я одновременно отображаю вид игры и вид сцены в редакторе.
Я показываю вид игры и вид сцены одновременно. в редакторе](https://i.sstatic.net/65TTp97B.png)
или если я вижу один между видом игры и видом сцены, результат иногда не применяется или применяется через несколько секунд.
Этот скрипт выполняется в режиме редактирования (выполняется в режиме редактирования), поэтому я попытался принудительно обновить его, используя метод ниже
Код: Выделить всё
public override void OnInspectorGUI()
{
base.OnInspectorGUI();
if (GUI.changed)
{
UnityEditorInternal.InternalEditorUtility.RepaintAllViews();
EditorApplication.QueuePlayerLoopUpdate();
EditorApplication.update();
EditorApplication.RepaintProjectWindow();
EditorApplication.RepaintHierarchyWindow();
EditorApplication.RepaintAnimationWindow();
SceneView.RepaintAll();
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... into-scene