概述
效果
创建、选择画笔
脚本
- Editor
using UnityEditor; using UnityEditor.Tilemaps; using UnityEngine; // [CustomEditor(typeof(GridBrush))] // 在默认画笔上添加脚本 [CustomEditor(typeof(CustomBrush))] // 在新创建的画笔上添加脚本 public class CreateCustomBrushEditor : GridBrushEditor { private string _brushName; protected override void OnEnable() { base.OnEnable(); _brushName = (target as CustomBrush)?.name; } // 重绘Scene视图 public override void OnPaintSceneGUI(GridLayout gridLayout, GameObject brushTarget, BoundsInt position, GridBrushBase.Tool tool, bool executing) { base.OnPaintSceneGUI(gridLayout, brushTarget, position, tool, executing); string msg = $"{_brushName}n{gridLayout.name}-{brushTarget.name}n{position}"; GUIStyle style = new GUIStyle(); style.normal.textColor = Color.red; style.fontSize = 20; // Handles 场景视图中的自定义 3D GUI 控件和绘制操作 Handles.Label(position.position, msg, style); } [MenuItem("Assets/Create/创建自定义画笔", false, 0)] public static void CreateCustomBrushFile() { // public static string SaveFilePanelInProject (string 保存框标题, string 文件名, string 后缀名, string 保存提示); string path = EditorUtility.SaveFilePanelInProject("保存自定义画笔", "New Brush", "asset", "请选择保存画笔的路径!"); if (path != "") AssetDatabase.CreateAsset(ScriptableObject.CreateInstance<CustomBrush>(), path); } }
- 画笔
using UnityEditor.Tilemaps; using UnityEngine; /** * CustomGridBrushAttribute 用于将该类定义为网格画笔,以及使其在调色板窗口中可用 * CustomGridBrushAttribute (bool hideAssetInstances, bool hideDefaultInstance, bool defaultBrush, string defaultName) * --> hideAssetInstances 在该瓦片面板窗口中隐藏该画笔的所有资源实例 * --> hideDefaultInstance 在该 Tile Palette 设置后,该摄像机渲染另一个通道(在不透明效果之后,但在图像效果之前) * --> defaultBrush 如果设置为 true,则画笔将替换在调色板窗口中作为默认画笔的 Unity 内置画笔 * --> defaultName 此画笔的默认实例的名称 */ // 创建自定义画笔 - 拓展画笔 [CustomGridBrushAttribute(false, true, false, "自定义画笔")] public class CustomBrush : GridBrush { public string name; // 画笔名称(可以添加其他参数用于修改画笔绘制的形式) /** * 重写画笔绘制方法 * public void Paint (GridLayout gridLayout, GameObject brushTarget, Vector3Int position); * --> gridLayout 用于布局的 Grid * --> brushTarget 绘制操作的目标。默认为当前选择的 GameObject * --> position 要绘制数据的单元格的坐标 */ public override void Paint(GridLayout gridLayout, GameObject brushTarget, Vector3Int position) { base.Paint(gridLayout, brushTarget, position); #if false // 修改绘制形式 // position.x += 2; // base.Paint(gridLayout, brushTarget, position); #endif // 打印绘制区域的信息 Debug.Log($"{gridLayout.name}-{brushTarget.name} ---> {position}"); } }
最后
以上就是英俊老虎为你收集整理的Unity(三十五):Tile Palette添加绘制画笔的全部内容,希望文章能够帮你解决Unity(三十五):Tile Palette添加绘制画笔所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复