@@ -19,52 +19,57 @@ public class SpriteGraphic02 : MaskableGraphic
19
19
[ SerializeField ]
20
20
private float _speed ;
21
21
22
- private MeshInfo _meshInfo ;
22
+ private MeshInfo _meshInfo = new MeshInfo ( ) ;
23
23
public MeshInfo MeshInfo
24
24
{
25
25
get { return _meshInfo ; }
26
26
set
27
27
{
28
+ //if (_meshInfo == null)
29
+ //{
30
+ // _meshInfo = new MeshInfo();
31
+ //}
32
+
28
33
//if (_spriteTagInfo.Equals(value))
29
34
// return;
30
35
31
- workerMesh . Clear ( ) ;
36
+ // workerMesh.Clear();
32
37
33
38
_meshInfo = value ;
34
39
35
- int length = _meshInfo . Vertices . Count ;
40
+ // int length = _meshInfo.Vertices.Count;
36
41
37
- workerMesh . vertices = new Vector3 [ length ] ;
38
- workerMesh . colors = new Color [ length ] ;
39
- workerMesh . uv = new Vector2 [ length ] ;
40
- workerMesh . triangles = new int [ length / 2 * 3 ] ;
42
+ // workerMesh.vertices = new Vector3[length];
43
+ // workerMesh.colors = new Color[length];
44
+ // workerMesh.uv = new Vector2[length];
45
+ // workerMesh.triangles = new int[length/2*3];
41
46
42
- for ( int i = 0 ; i < length ; i ++ )
43
- {
44
- _meshInfo . Colors . Add ( color ) ;
45
-
46
- if ( i % 6 == 0 )
47
- {
48
- int num = i / 6 ;
49
- _meshInfo . Triangles . Add ( 0 + 4 * num ) ;
50
- _meshInfo . Triangles . Add ( 1 + 4 * num ) ;
51
- _meshInfo . Triangles . Add ( 2 + 4 * num ) ;
52
-
53
- _meshInfo . Triangles . Add ( 2 + 4 * num ) ;
54
- _meshInfo . Triangles . Add ( 3 + 4 * num ) ;
55
- _meshInfo . Triangles . Add ( 0 + 4 * num ) ;
56
- }
57
- }
47
+ // for (int i = 0; i < length; i++)
48
+ // {
49
+ // _meshInfo.Colors.Add(color);
50
+
51
+ // if (i % 6 == 0)
52
+ // {
53
+ // int num = i / 6;
54
+ // _meshInfo.Triangles.Add(0 + 4 * num);
55
+ // _meshInfo.Triangles.Add(1 + 4 * num);
56
+ // _meshInfo.Triangles.Add(2 + 4 * num);
58
57
59
- workerMesh . SetVertices ( _meshInfo . Vertices ) ;
60
- workerMesh . SetUVs ( 0 , _meshInfo . UVs ) ;
61
- workerMesh . SetColors ( _meshInfo . Colors ) ;
62
- workerMesh . triangles = _meshInfo . Triangles . ToArray ( ) ;
58
+ // _meshInfo.Triangles.Add(2 + 4 * num);
59
+ // _meshInfo.Triangles.Add(3 + 4 * num);
60
+ // _meshInfo.Triangles.Add(0 + 4 * num);
61
+ // }
62
+ // }
63
63
64
- canvasRenderer . SetMesh ( workerMesh ) ;
64
+ // workerMesh.SetVertices(_meshInfo.Vertices);
65
+ // workerMesh.SetUVs(0,_meshInfo.UVs);
66
+ // workerMesh.SetColors(_meshInfo.Colors);
67
+ // workerMesh.triangles = _meshInfo.Triangles.ToArray();
65
68
66
- // SetMaterialDirty();
67
- SetAllDirty ( ) ;
69
+ // canvasRenderer.SetMesh(workerMesh);
70
+
71
+ //// SetMaterialDirty();
72
+ SetAllDirty ( ) ;
68
73
// UpdateMaterial();
69
74
}
70
75
}
@@ -92,8 +97,9 @@ public override Material material
92
97
_defaultMater = new Material ( Shader . Find ( _defaultShader ) ) ;
93
98
_defaultMater . SetFloat ( "_CellAmount" , _cellAmount ) ;
94
99
_defaultMater . SetFloat ( "_Speed" , _speed ) ;
95
- _defaultMater . SetTexture ( "_MainTex" , mainTexture ) ;
96
- // _defaultMater.EnableKeyword("EMOJI_ANIMATION");
100
+ //_defaultMater.SetTexture("_MainTex", mainTexture);
101
+ // _defaultMater.EnableKeyword("EMOJI_ANIMATION");
102
+ _defaultMater . DisableKeyword ( "EMOJI_ANIMATION" ) ;
97
103
}
98
104
return _defaultMater ;
99
105
}
@@ -110,43 +116,58 @@ protected override void OnEnable()
110
116
111
117
protected override void OnPopulateMesh ( VertexHelper vh )
112
118
{
113
- // base.OnPopulateMesh(vh);
114
-
115
- //if (_inlineManager == null|| m_spriteAsset==null|| !_inlineManager.GetMeshInfo.ContainsKey(m_spriteAsset.Id))
116
- // return;
117
-
118
- //SpriteTagInfo meshInfo = _inlineManager.GetMeshInfo[m_spriteAsset.Id];
119
- //if (meshInfo == null || meshInfo.Pos == null || meshInfo.Pos.Length == 0)
120
- //{
121
- // vh.Clear();
122
- // //base.OnPopulateMesh(vh);
123
- //}
124
- //else
125
- //{
126
- // vh.Clear();
127
- // for (int i = 0; i < meshInfo.Pos.Length; i++)
128
- // {
129
- // int tempVertsIndex = i & 3;
130
- // _tempVerts[tempVertsIndex].position = meshInfo.Pos[i];
131
- // _tempVerts[tempVertsIndex].uv0 = meshInfo.Uv[i];
132
- // _tempVerts[tempVertsIndex].color = color;
133
- // if (tempVertsIndex == 3)
134
- // vh.AddUIVertexQuad(_tempVerts);
135
-
136
- // // //--------------------------------------------------------------------------------------
137
- // // //看到unity 的mesh支持多层uv 还在想shader渲染动图有思路了呢
138
- // // //结果调试shader的时候发现uv1-uv3的值跟uv0一样
139
- // // //意思就是 unity canvasrender 目前的设计,为了优化性能,不支持uv1-3,并不是bug,所以没法存多套uv。。。
140
- // // //https://issuetracker.unity3d.com/issues/canvasrenderer-dot-setmesh-does-not-seem-to-support-more-than-one-uv-set
141
- // // //不知道后面会不会更新 ------ 于是现在还是用老办法吧, 规则图集 --> uv移动
142
- // // //--------------------------------------------------------------------------------------
143
-
144
- // // //h.uv2 = spriteInfors[1].Uv;
145
- // // //h.uv3 = spriteInfors[2].Uv;
146
- // // //h.uv4 = spriteInfors[3].Uv;
147
- // }
148
- //}
149
- }
119
+ if ( _meshInfo != null )
120
+ {
121
+ vh . Clear ( ) ;
122
+ for ( int i = 0 ; i < _meshInfo . Vertices . Count ; i ++ )
123
+ {
124
+ int tempVertsIndex = i & 3 ;
125
+ _tempVerts [ tempVertsIndex ] . position = _meshInfo . Vertices [ i ] ;
126
+ _tempVerts [ tempVertsIndex ] . uv0 = _meshInfo . UVs [ i ] ;
127
+ _tempVerts [ tempVertsIndex ] . color = color ;
128
+ if ( tempVertsIndex == 3 )
129
+ vh . AddUIVertexQuad ( _tempVerts ) ;
130
+ }
131
+ }
132
+
133
+
134
+ // base.OnPopulateMesh(vh);
135
+
136
+ //if (_inlineManager == null|| m_spriteAsset==null|| !_inlineManager.GetMeshInfo.ContainsKey(m_spriteAsset.Id))
137
+ // return;
138
+
139
+ //SpriteTagInfo meshInfo = _inlineManager.GetMeshInfo[m_spriteAsset.Id];
140
+ //if (meshInfo == null || meshInfo.Pos == null || meshInfo.Pos.Length == 0)
141
+ //{
142
+ // vh.Clear();
143
+ // //base.OnPopulateMesh(vh);
144
+ //}
145
+ //else
146
+ //{
147
+ // vh.Clear();
148
+ // for (int i = 0; i < meshInfo.Pos.Length; i++)
149
+ // {
150
+ // int tempVertsIndex = i & 3;
151
+ // _tempVerts[tempVertsIndex].position = meshInfo.Pos[i];
152
+ // _tempVerts[tempVertsIndex].uv0 = meshInfo.Uv[i];
153
+ // _tempVerts[tempVertsIndex].color = color;
154
+ // if (tempVertsIndex == 3)
155
+ // vh.AddUIVertexQuad(_tempVerts);
156
+
157
+ // // //--------------------------------------------------------------------------------------
158
+ // // //看到unity 的mesh支持多层uv 还在想shader渲染动图有思路了呢
159
+ // // //结果调试shader的时候发现uv1-uv3的值跟uv0一样
160
+ // // //意思就是 unity canvasrender 目前的设计,为了优化性能,不支持uv1-3,并不是bug,所以没法存多套uv。。。
161
+ // // //https://issuetracker.unity3d.com/issues/canvasrenderer-dot-setmesh-does-not-seem-to-support-more-than-one-uv-set
162
+ // // //不知道后面会不会更新 ------ 于是现在还是用老办法吧, 规则图集 --> uv移动
163
+ // // //--------------------------------------------------------------------------------------
164
+
165
+ // // //h.uv2 = spriteInfors[1].Uv;
166
+ // // //h.uv3 = spriteInfors[2].Uv;
167
+ // // //h.uv4 = spriteInfors[3].Uv;
168
+ // }
169
+ //}
170
+ }
150
171
151
172
152
173
}
0 commit comments