unity编辑器扩展chapter2.docx
- 文档编号:365836
- 上传时间:2022-10-09
- 格式:DOCX
- 页数:10
- 大小:17.17KB
unity编辑器扩展chapter2.docx
《unity编辑器扩展chapter2.docx》由会员分享,可在线阅读,更多相关《unity编辑器扩展chapter2.docx(10页珍藏版)》请在冰豆网上搜索。
unity编辑器扩展chapter2
Unity编辑器扩展Chapter2
请选中您要保存的内容,粘贴到此文本框
二.使用Gizoms绘制网格及矩阵转换使用
1.创建Leve类,作为场景控制类:
1usingUnityEngine;
2//使用namespace方便脚本管理
3namespaceRunAndJump{
4//使用部分类partial将类依据不同的功能分布到各个文件中,便于功能区分个管理
5publicpartialclassLevel:
MonoBehaviour{
6[SerializeField]
7publicint_totalTime=60;
8[SerializeField]
9privatefloat_gravity=-30;
10[SerializeField]
11privateAudioClip_bgm;
12[SerializeField]
13privateSprite_background;
14
15[SerializeField]
16privateint_totalColumns=25;
17
18[SerializeField]
19privateint_totalRows=10;
20
21publicconstfloatGridSize=1.28f;
22
23privatereadonlyColor_normalColor=Color.grey;
24privatereadonlyColor_selectedColor=Color.yellow;
25publicintTotalTime{
26get{return_totalTime;}
27set{_totalTime=value;}
28}
29
30publicfloatGravity{
31get{return_gravity;}
32set{_gravity=value;}
33}
34
35publicAudioClipBgm{
36get{return_bgm;}
37set{_bgm=value;}
38}
39
40publicSpriteBackground{
41get{return_background;}
42set{_background=value;}
43}
44
45publicintTotalColumns
46{
47get
48{
49return_totalColumns;
50}
51
52set
53{
54_totalColumns=value;
55}
56}
57
58publicintTotalRows
59{
60get
61{
62return_totalRows;
63}
64
65set
66{
67_totalRows=value;
68}
69}
70
71//绘制边界
72privatevoidGridFrameGizmo(intcols,introws)
73{
74Gizmos.DrawLine(newVector3(0,0,0),newVector3(0,rows*GridSize,0));
75Gizmos.DrawLine(newVector3(0,0,0),newVector3(cols*GridSize,0,0));
76Gizmos.DrawLine(newVector3(cols*GridSize,0,0),newVector3(cols*GridSize,rows*GridSize,0));
77Gizmos.DrawLine(newVector3(0,rows*GridSize,0),newVector3(cols*GridSize,rows*GridSize,0));
78}
79
80//绘制内部线条
81privatevoidGridGizmos(intcols,introws)
82{
83for(inti=0;i<cols;i++)
84{
85Gizmos.DrawLine(newVector3(i*GridSize,0,0),newVector3(i*GridSize,rows*GridSize,0));
86}
87
88for(intj=0;j<rows;j++)
89{
90Gizmos.DrawLine(newVector3(0,j*GridSize,0),newVector3(cols*GridSize,j*GridSize,0));
91}
92}
93
94//D使用unity默认的OnDrawGizmos方法来绘制Gzimos
95privatevoidOnDrawGizmos()
96{
97ColoroldColor=Gizmos.color;//修改的这些属性都是静态属性,所以要在修改前保存其值,修改后再复原,防止后续使用该静态属性是修改后的
98Matrix4x4oldMatrix=Gizmos.matrix;//修改的这些属性都是静态属性,所以要在修改前保存其值,修改后再复原,防止后续使用该静态属性是修改后的
99Gizmos.matrix=transform.localToWorldMatrix;//该语句可以为gizmos提供该transform位移,旋转,缩放等特性
100
101Gizmos.color=_normalColor;
102GridGizmos(_totalColumns,_totalRows);
103GridFrameGizmo(_totalColumns,_totalRows);
104
105Gizmos.color=oldColor;//恢复修改后的静态属性
106Gizmos.matrix=oldMatrix;//恢复修改后的静态属性
107}
108
109privatevoidOnDrawGizmosSelected()
110{
111ColoroldColor=Gizmos.color;
112Matrix4x4oldMatrix=Gizmos.matrix;
113Gizmos.matrix=transform.localToWorldMatrix;
114
115
116Gizmos.color=_selectedColor;
117GridFrameGizmo(_totalColumns,_totalRows);
118
119Gizmos.color=oldColor;
120Gizmos.matrix=oldMatrix;
121
122}
123
124///<summary>
125///将世界坐标转换为grid网格中的点坐标
126///</summary>
127///<paramname="point">世界坐标</param>
128///<returns></returns>
129publicVector3WordToGridCoordinates(Vector3point)
130{
131Vector3gridPoint=newVector3((int)((point.x-transform.position.x)/GridSize),(int)((point.y-transform.position.y)/GridSize),0.0f);
132returngridPoint;
133}
134
135///<summary>
136///Grid网格中的位置转换为世界坐标坐标
137///</summary>
138///<paramname="col">行值</param>
139///<paramname="row">列值</param>
140///<returns></returns>
141publicVector3GridToWordCoordinates(intcol,introw)
142{
143Vector3wordPoint=newVector3(transform.position.x+(col*GridSize/2.0f),transform.position.y+(row*GridSize/2.0f),0.0f);
144returnwordPoint;
145}
146///<summary>
147///坐标位置是否在网格边界内
148///</summary>
149///<paramname="point"></param>
150///<returns></returns>
151publicboolIsInsideGridBounds(Vector3point)
152{
153floatminX=transform.position.x;
154floatmaxX=minX+_totalColumns*GridSize;
155floatminY=transform.position.y;
156floatmaxY=minY+_totalRows*GridSize;
157return(point.x>=minX&&point.x<=maxX&&point.y>=minY&&point.y<=maxY);
158}
159
160///<summary>
161///坐标位置是否在网格边界内
162///</summary>
163///<paramname="point"></param>
164///<returns></returns>
165
166publicboolIsInsideGridBounds(intcol,introw)
167{
168return(col>=0&&col<_totalColumns&&row>=0&&row<=_totalRows);
16
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- unity 编辑器 扩展 chapter2