public void SortingBlock(ref Rect r) { ps.StartIgnoreChangeCheck(); bool prevAutoSort = autoSort; GUI.enabled = ps.catLighting.renderPath == SFPSC_Lighting.RenderPath.Forward; autoSort = UndoableToggle(r, autoSort, autoSort ? "自动排序..." : "自动排序", "auto sort", null); GUI.enabled = true; if (autoSort != prevAutoSort && autoSort) { UpdateAutoSettings(); } ps.EndIgnoreChangeCheck(); r.xMin += 20; r.y += 20; bool prevGUI = GUI.enabled; GUI.enabled = !autoSort; { int wOrder = SF_GUI.WidthOf("Order", EditorStyles.miniLabel) + 2; int wPlus = SF_GUI.WidthOf("+", EditorStyles.miniLabel) + 2; int wOffset = 32; int wEquals = SF_GUI.WidthOf("=", EditorStyles.miniLabel); int wResult = 32; int wField = Mathf.FloorToInt(r.width - wOrder - wPlus - wEquals - wOffset - wResult); Rect tRect = new Rect(r); tRect.width = wOrder; GUI.Label(tRect, new GUIContent("排序", "确定此着色器相对于其他渲染的顺序"), EditorStyles.miniLabel); SF_GUI.MoveRight(ref tRect, wField); //queuePreset = (Queue)EditorGUI.Popup(tRect, (int)queuePreset, strQueue ); queuePreset = (Queue)UndoableEnumPopupNamed(tRect, queuePreset, strQueue, "render queue order"); SF_GUI.MoveRight(ref tRect, wPlus); GUI.Label(tRect, "+"); SF_GUI.MoveRight(ref tRect, wOffset); queueOffset = UndoableIntField(tRect, queueOffset, "render queue offset"); SF_GUI.MoveRight(ref tRect, wEquals); GUI.Label(tRect, "="); SF_GUI.MoveRight(ref tRect, wResult); GUI.Label(tRect, (queueNumbers[(int)queuePreset] + queueOffset).ToString()); r.y += 20; //renderType = (RenderType)SF_GUI.LabeledEnumField( r,new GUIContent("Render Type","Defines shader replacement; required for some rendering effects, such as SSAO"), renderType, EditorStyles.miniLabel ); renderType = (RenderType)UndoableLabeledEnumPopupNamed(r, "渲染类型", renderType, strRenderType, "render type"); r.y += 20; //depthTest = (DepthTest)SF_GUI.LabeledEnumFieldNamed( r, strDepthTest, new GUIContent( "Depth Test", "Compared to the existing geometry in the scene, \nthis determines when to render this geometry. \u2264 is default, meaning:\n\"If this part is closer or as close to the camera as existing geometry, draw me!\"" ), (int)depthTest, EditorStyles.miniLabel ); depthTest = (DepthTest)UndoableLabeledEnumPopupNamed(r, "深度测试", depthTest, strDepthTest, "depth test"); r.y += 20; //ignoreProjector = GUI.Toggle(r, ignoreProjector, "Ignore Projectors" ); ignoreProjector = UndoableToggle(r, ignoreProjector, "忽略投影器", "ignore projectors", null); r.y += 20; //writeDepth = GUI.Toggle( r, writeDepth, "Write to Depth buffer" ); writeDepth = UndoableToggle(r, writeDepth, "写入深度缓冲区", "depth buffer write", null); r.y += 20; } GUI.enabled = prevGUI; r.xMin -= 20; }