unity编辑器扩展chapter2.docx

上传人:b****1 文档编号:365836 上传时间:2022-10-09 格式:DOCX 页数:10 大小:17.17KB
下载 相关 举报
unity编辑器扩展chapter2.docx_第1页
第1页 / 共10页
unity编辑器扩展chapter2.docx_第2页
第2页 / 共10页
unity编辑器扩展chapter2.docx_第3页
第3页 / 共10页
unity编辑器扩展chapter2.docx_第4页
第4页 / 共10页
unity编辑器扩展chapter2.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

unity编辑器扩展chapter2.docx

《unity编辑器扩展chapter2.docx》由会员分享,可在线阅读,更多相关《unity编辑器扩展chapter2.docx(10页珍藏版)》请在冰豆网上搜索。

unity编辑器扩展chapter2.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1