Unity3d Unity编辑器脚本,如何以编程方式标记属性字段';s值不能更改
我想防止预制件的“应用”按钮可能会改变某些属性字段,是否有办法通过编程方式标记属性字段的值进行更改(使其始终为粗体)?您需要不同的路径实例,以便它们对于每个实例化的NPC都是唯一的 你的问题很有趣。我做了一个快速的调查给你一个好的答案,但我就是做不到。Unity对此没有内置的解决方案。这肯定会有用,但对不起,不行 我发现唯一有用但自己没有尝试过的是。作者用一段很好的代码回答了自己的问题,他正在使用一种变通方法,您可以根据自己的需要进行调整 为简单起见,我将其粘贴到此处:Unity3d Unity编辑器脚本,如何以编程方式标记属性字段';s值不能更改,unity3d,unity3d-editor,Unity3d,Unity3d Editor,我想防止预制件的“应用”按钮可能会改变某些属性字段,是否有办法通过编程方式标记属性字段的值进行更改(使其始终为粗体)?您需要不同的路径实例,以便它们对于每个实例化的NPC都是唯一的 你的问题很有趣。我做了一个快速的调查给你一个好的答案,但我就是做不到。Unity对此没有内置的解决方案。这肯定会有用,但对不起,不行 我发现唯一有用但自己没有尝试过的是。作者用一段很好的代码回答了自己的问题,他正在使用一种变通方法,您可以根据自己的需要进行调整 为简单起见,我将其粘贴到此处: public overr
public override void OnInspectorGUI ()
{
serializedObject.Update ();
DrawDefaultInspector ();
SerializedProperty myProperty = serializedObject.FindProperty ("maxDistance");
if (tick) {
myProperty.floatValue = tempValue;
tick = false;
}
if(!Application.isPlaying)
{
if (!myProperty.prefabOverride) {
GUI.color = Color.red;
tick = true;
tempValue =myProperty.floatValue;
myProperty.floatValue += 1;
}
else
GUI.color = Color.green;
}
EditorGUILayout.PropertyField (myProperty);
if (GUI.changed) {
EditorUtility.SetDirty (target);
}
serializedObject.ApplyModifiedProperties ();
}
由于问题的日期,我希望这对你有用。
祝你好运 你的意思是使一个属性只读,但仍然显示在编辑器中?感谢你的后续行动,而不是只读,我只想使一些像游戏对象的位置,它将只存储在场景中,而不是同步到同一预制的其他实例。我有一个名为WayPath的MonBehavior脚本。它用来存储NPC巡逻的路线点。显然,在每个NPC中,路径应该保持不同。所以即使那些NPC使用相同的预设,他们仍然应该保持路径不同,尽管我按下了“应用”按钮,路径不应该与其他实例同步。只需制作一个空的游戏对象并设置它的位置?