Question by
nigel12341 · Nov 22, 2017 at 08:57 PM ·
unity 5error
Property 'UnityEditor.Editor.preview' is read only.
hi im trieing to get these compile errors away but this one i dont understand.
Property 'UnityEditor.Editor.preview' is read only.
this is the full code:
#pragma strict
@CustomEditor (CameraMotionBlur)
class CameraMotionBlurEditor extends Editor
{
var serObj : SerializedObject;
var filterType : SerializedProperty;
var preview_ : SerializedProperty;
var previewScale : SerializedProperty;
var movementScale : SerializedProperty;
var jitter : SerializedProperty;
var rotationScale : SerializedProperty;
var maxVelocity : SerializedProperty;
var minVelocity : SerializedProperty;
var maxNumSamples : SerializedProperty;
var velocityScale : SerializedProperty;
var velocityDownsample : SerializedProperty;
var noiseTexture : SerializedProperty;
var showVelocity : SerializedProperty;
var showVelocityScale : SerializedProperty;
var excludeLayers : SerializedProperty;
//var dynamicLayers : SerializedProperty;
function OnEnable () {
serObj = new SerializedObject (target);
filterType = serObj.FindProperty ("filterType");
preview = serObj.FindProperty ("preview_");
previewScale = serObj.FindProperty ("previewScale");
movementScale = serObj.FindProperty ("movementScale");
rotationScale = serObj.FindProperty ("rotationScale");
maxVelocity = serObj.FindProperty ("maxVelocity");
minVelocity = serObj.FindProperty ("minVelocity");
maxNumSamples = serObj.FindProperty ("maxNumSamples");
jitter = serObj.FindProperty ("jitter");
excludeLayers = serObj.FindProperty ("excludeLayers");
//dynamicLayers = serObj.FindProperty ("dynamicLayers");
velocityScale = serObj.FindProperty ("velocityScale");
velocityDownsample = serObj.FindProperty ("velocityDownsample");
noiseTexture = serObj.FindProperty ("noiseTexture");
}
function OnInspectorGUI () {
serObj.Update ();
EditorGUILayout.LabelField("Simulates camera based motion blur", EditorStyles.miniLabel);
EditorGUILayout.PropertyField (filterType, new GUIContent("Technique"));
if (filterType.enumValueIndex == 3 && !(target as CameraMotionBlur).Dx11Support()) {
EditorGUILayout.HelpBox("DX11 mode not supported (need shader model 5)", MessageType.Info);
}
EditorGUILayout.PropertyField (velocityScale, new GUIContent(" Velocity Scale"));
if(filterType.enumValueIndex >= 2) {
EditorGUILayout.LabelField(" Tile size used during reconstruction filter:", EditorStyles.miniLabel);
EditorGUILayout.PropertyField (maxVelocity, new GUIContent(" Velocity Max"));
}
else
EditorGUILayout.PropertyField (maxVelocity, new GUIContent(" Velocity Max"));
EditorGUILayout.PropertyField (minVelocity, new GUIContent(" Velocity Min"));
EditorGUILayout.Separator ();
EditorGUILayout.LabelField("Technique Specific");
if(filterType.enumValueIndex == 0) {
// portal style motion blur
EditorGUILayout.PropertyField (rotationScale, new GUIContent(" Camera Rotation"));
EditorGUILayout.PropertyField (movementScale, new GUIContent(" Camera Movement"));
}
else {
// "plausible" blur or cheap, local blur
EditorGUILayout.PropertyField (excludeLayers, new GUIContent(" Exclude Layers"));
EditorGUILayout.PropertyField (velocityDownsample, new GUIContent(" Velocity Downsample"));
velocityDownsample.intValue = velocityDownsample.intValue < 1 ? 1 : velocityDownsample.intValue;
if(filterType.enumValueIndex >= 2) { // only display jitter for reconstruction
EditorGUILayout.PropertyField (noiseTexture, new GUIContent(" Sample Jitter"));
EditorGUILayout.PropertyField (jitter, new GUIContent(" Jitter Strength"));
}
}
EditorGUILayout.Separator ();
EditorGUILayout.PropertyField (preview, new GUIContent("Preview"));
if (preview_.boolValue)
EditorGUILayout.PropertyField (previewScale, new GUIContent(""));
serObj.ApplyModifiedProperties();
}
}
its in this line: preview = serObj.FindProperty ("preview");
Comment
Answer by EDevJogos · Nov 22, 2017 at 09:07 PM
You are using UnityEditor which contains a property preview only with a getter making it ready only, i think what you want on that line is set preview_ and not preview.
preview_ = serObj.FindProperty ("preview");
On EditorGUILayout.PropertyField (preview, new GUIContent("Preview"));
it should be
EditorGUILayout.PropertyField (preview_, new GUIContent("Preview")); too