【问题标题】:Unity - How do I reset Inspector values for an ExecuteInEditMode script?Unity - 如何重置 ExecuteInEditMode 脚本的检查器值?
【发布时间】:2019-12-18 15:12:54
【问题描述】:

我想恢复默认值,而不必关闭并重新启动 Unity。

当我在 VSC 中保存时,检查器中的字段保持不变。让它们重置的唯一方法是关闭并重新启动 Unity。我是否要更改代码、Unity 中的设置或 Visual Studio Code 中的设置以使 Inspector 面板和内容恢复到原始状态?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

[ExecuteInEditMode]
public class DebugGizmos : MonoBehaviour
{
 [SerializeField]
 private float innerRadius = 1.0f;

 [SerializeField]
 private float outerRadius = 10.0f;

 [SerializeField]
 private float angle = 10.0f;

 [SerializeField]
 private float gap = 10.0f;

 [SerializeField]
 private int segments = 10;

 [SerializeField]
 private float height = 1;

 // Debugging var for drawing Gizmos
 private Vector3 vLI, vLO, vUI, vUO;
 private List<Vector3> liaPts, loaPts, uiaPts, uoaPts;

 void OnDrawGizmos()
 {
     GenerateWedge(innerRadius, outerRadius, angle, gap, segments, height);
     // if (!Application.isPlaying) return;

     for (var i=0; i < segments; i++)
     {
         Gizmos.color = Color.red;
         Gizmos.DrawWireSphere(liaPts[i], .1f); //lowerInner
         Gizmos.color = Color.yellow;
         Gizmos.DrawWireSphere(uiaPts[i], .1f); //upperInner
         Gizmos.color = Color.green; 
         Gizmos.DrawWireSphere(loaPts[i], .1f); //lowerOuter
         Gizmos.color = Color.magenta;
         Gizmos.DrawWireSphere(uoaPts[i], .1f); //upperOuter
     }
 }

 ...and some helper functions.

【问题讨论】:

  • 如果您点击组件选项(通常是一个齿轮或三个点),您应该能够重置组件。
  • 所有[ExecuteInEditMode] 的变化是UpdateOnEnable 等也将在播放模式之外被调用......其他一切都像任何其他组件一样运行

标签: c# unity3d


【解决方案1】:

右键单击脚本组件所在的 Inspector 中的齿轮图标。

然后点击重置。

这应该使值回到它们的初始值。

【讨论】:

  • 成功了...跟进。它重置为旧值,即我已将脚本更新为新值。当我重置它时,Unity 将这些值设置为文件之前多次保存的状态。为什么它不采用新的默认值?
  • @kalmdown 我认为你需要设置“脏状态”来实现它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多