├── .gitignore ├── README.md ├── assets ├── Effect.meta ├── Effect │ ├── CircleAvatar.effect │ ├── CircleAvatar.effect.meta │ ├── CircleAvatar.mtl │ └── CircleAvatar.mtl.meta ├── Scene.meta ├── Scene │ ├── helloworld.fire │ └── helloworld.fire.meta ├── Script.meta ├── Script │ ├── CircleAvatar.ts │ └── CircleAvatar.ts.meta ├── Texture.meta └── Texture │ ├── avatar.png │ └── avatar.png.meta ├── creator.d.ts ├── jsconfig.json ├── project.json ├── settings ├── builder.json ├── builder.panel.json ├── project.json └── services.json ├── template-banner.png ├── template.json └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | #///////////////////////////////////////////////////////////////////////////// 2 | # Fireball Projects 3 | #///////////////////////////////////////////////////////////////////////////// 4 | 5 | library/ 6 | temp/ 7 | local/ 8 | build/ 9 | 10 | #///////////////////////////////////////////////////////////////////////////// 11 | # Logs and databases 12 | #///////////////////////////////////////////////////////////////////////////// 13 | 14 | *.log 15 | *.sql 16 | *.sqlite 17 | 18 | #///////////////////////////////////////////////////////////////////////////// 19 | # files for debugger 20 | #///////////////////////////////////////////////////////////////////////////// 21 | 22 | *.sln 23 | *.csproj 24 | *.pidb 25 | *.unityproj 26 | *.suo 27 | 28 | #///////////////////////////////////////////////////////////////////////////// 29 | # OS generated files 30 | #///////////////////////////////////////////////////////////////////////////// 31 | 32 | .DS_Store 33 | ehthumbs.db 34 | Thumbs.db 35 | 36 | #///////////////////////////////////////////////////////////////////////////// 37 | # exvim files 38 | #///////////////////////////////////////////////////////////////////////////// 39 | 40 | *UnityVS.meta 41 | *.err 42 | *.err.meta 43 | *.exvim 44 | *.exvim.meta 45 | *.vimentry 46 | *.vimentry.meta 47 | *.vimproject 48 | *.vimproject.meta 49 | .vimfiles.*/ 50 | .exvim.*/ 51 | quick_gen_project_*_autogen.bat 52 | quick_gen_project_*_autogen.bat.meta 53 | quick_gen_project_*_autogen.sh 54 | quick_gen_project_*_autogen.sh.meta 55 | .exvim.app 56 | 57 | #///////////////////////////////////////////////////////////////////////////// 58 | # webstorm files 59 | #///////////////////////////////////////////////////////////////////////////// 60 | 61 | .idea/ 62 | 63 | #////////////////////////// 64 | # VS Code 65 | #////////////////////////// 66 | 67 | .vscode/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # hello-world 2 | Hello world new project template. 3 | -------------------------------------------------------------------------------- /assets/Effect.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "6220acc7-0a82-4b70-8f75-72a9d70a0f3c", 4 | "isSubpackage": false, 5 | "subpackageName": "", 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/Effect/CircleAvatar.effect: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2017-2018 Xiamen Yaji Software Co., Ltd. 2 | 3 | CCEffect %{ 4 | techniques: 5 | - passes: 6 | - vert: vs 7 | frag: fs 8 | blendState: 9 | targets: 10 | - blend: true 11 | rasterizerState: 12 | cullMode: none 13 | properties: 14 | texture: { value: white } 15 | alphaThreshold: { value: 0.5 } 16 | edge: { 17 | value: 0.15, 18 | inspector: { 19 | tooltip: "圆角范围", 20 | range: [0.0, 0.5] 21 | } 22 | } 23 | }% 24 | 25 | 26 | CCProgram vs %{ 27 | precision highp float; 28 | 29 | #include 30 | #include 31 | 32 | in vec3 a_position; 33 | in vec4 a_color; 34 | out vec4 v_color; 35 | 36 | #if USE_TEXTURE 37 | in vec2 a_uv0; 38 | out vec2 v_uv0; 39 | #endif 40 | 41 | void main () { 42 | vec4 pos = vec4(a_position, 1); 43 | 44 | #if CC_USE_MODEL 45 | pos = cc_matViewProj * cc_matWorld * pos; 46 | #else 47 | pos = cc_matViewProj * pos; 48 | #endif 49 | 50 | #if USE_TEXTURE 51 | v_uv0 = a_uv0; 52 | #endif 53 | 54 | v_color = a_color; 55 | 56 | gl_Position = pos; 57 | } 58 | }% 59 | 60 | 61 | CCProgram fs %{ 62 | precision highp float; 63 | 64 | #include 65 | 66 | in vec4 v_color; 67 | 68 | uniform Props { 69 | float edge; 70 | }; 71 | 72 | #if USE_TEXTURE 73 | in vec2 v_uv0; 74 | uniform sampler2D texture; 75 | #endif 76 | 77 | void main () { 78 | vec4 o = vec4(1, 1, 1, 1); 79 | 80 | #if USE_TEXTURE 81 | o *= texture(texture, v_uv0); 82 | #if CC_USE_ALPHA_ATLAS_TEXTURE 83 | o.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r; 84 | #endif 85 | #endif 86 | 87 | o *= v_color; 88 | 89 | ALPHA_TEST(o); 90 | 91 | vec2 uv = v_uv0.xy - vec2(0.5, 0.5); 92 | float rx = abs(uv.x) - (0.5 - edge); 93 | float ry = abs(uv.y) - (0.5 - edge); 94 | float mx = step(0.5 - edge, abs(uv.x)); 95 | float my = step(0.5 - edge, abs(uv.y)); 96 | float radius = length(vec2(rx, ry)); 97 | float a = 1.0 - mx * my * step(edge, radius) * smoothstep(0., edge * 0.01, radius - edge); 98 | gl_FragColor = vec4(o.rgb, o.a * a); 99 | } 100 | }% 101 | -------------------------------------------------------------------------------- /assets/Effect/CircleAvatar.effect.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.25", 3 | "uuid": "bdfafdd7-2814-43f0-918c-ca06cc6630fb", 4 | "compiledShaders": [ 5 | { 6 | "glsl1": { 7 | "vert": "\nprecision highp float;\nuniform mediump mat4 cc_matViewProj;\nuniform mat4 cc_matWorld;\nattribute vec3 a_position;\nattribute vec4 a_color;\nvarying vec4 v_color;\n#if USE_TEXTURE\nattribute vec2 a_uv0;\nvarying vec2 v_uv0;\n#endif\nvoid main () {\n vec4 pos = vec4(a_position, 1);\n #if CC_USE_MODEL\n pos = cc_matViewProj * cc_matWorld * pos;\n #else\n pos = cc_matViewProj * pos;\n #endif\n #if USE_TEXTURE\n v_uv0 = a_uv0;\n #endif\n v_color = a_color;\n gl_Position = pos;\n}", 8 | "frag": "\nprecision highp float;\n#if USE_ALPHA_TEST\n uniform float alphaThreshold;\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nvarying vec4 v_color;\nuniform float edge;\n#if USE_TEXTURE\nvarying vec2 v_uv0;\nuniform sampler2D texture;\n#endif\nvoid main () {\n vec4 o = vec4(1, 1, 1, 1);\n #if USE_TEXTURE\n o *= texture2D(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_TEXTURE\n o.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #endif\n o *= v_color;\n ALPHA_TEST(o);\n vec2 uv = v_uv0.xy - vec2(0.5, 0.5);\n float rx = abs(uv.x) - (0.5 - edge);\n float ry = abs(uv.y) - (0.5 - edge);\n float mx = step(0.5 - edge, abs(uv.x));\n float my = step(0.5 - edge, abs(uv.y));\n float radius = length(vec2(rx, ry));\n float a = 1.0 - mx * my * step(edge, radius) * smoothstep(0., edge * 0.01, radius - edge);\n gl_FragColor = vec4(o.rgb, o.a * a);\n}" 9 | }, 10 | "glsl3": { 11 | "vert": "\nprecision highp float;\nuniform CCGlobal {\n highp vec4 cc_time;\n mediump vec4 cc_screenSize;\n mediump vec4 cc_screenScale;\n mediump vec4 cc_nativeSize;\n highp mat4 cc_matView;\n mediump mat4 cc_matViewInv;\n mediump mat4 cc_matProj;\n mediump mat4 cc_matProjInv;\n mediump mat4 cc_matViewProj;\n mediump mat4 cc_matViewProjInv;\n mediump vec4 cc_cameraPos;\n};\nuniform CCLocal {\n mat4 cc_matWorld;\n mat4 cc_matWorldIT;\n};\nin vec3 a_position;\nin vec4 a_color;\nout vec4 v_color;\n#if USE_TEXTURE\nin vec2 a_uv0;\nout vec2 v_uv0;\n#endif\nvoid main () {\n vec4 pos = vec4(a_position, 1);\n #if CC_USE_MODEL\n pos = cc_matViewProj * cc_matWorld * pos;\n #else\n pos = cc_matViewProj * pos;\n #endif\n #if USE_TEXTURE\n v_uv0 = a_uv0;\n #endif\n v_color = a_color;\n gl_Position = pos;\n}", 12 | "frag": "\nprecision highp float;\n#if USE_ALPHA_TEST\n uniform ALPHA_TEST {\n float alphaThreshold;\n };\n#endif\nvoid ALPHA_TEST (in vec4 color) {\n #if USE_ALPHA_TEST\n if (color.a < alphaThreshold) discard;\n #endif\n}\nvoid ALPHA_TEST (in float alpha) {\n #if USE_ALPHA_TEST\n if (alpha < alphaThreshold) discard;\n #endif\n}\nin vec4 v_color;\nuniform Props {\n float edge;\n};\n#if USE_TEXTURE\nin vec2 v_uv0;\nuniform sampler2D texture;\n#endif\nvoid main () {\n vec4 o = vec4(1, 1, 1, 1);\n #if USE_TEXTURE\n o *= texture(texture, v_uv0);\n #if CC_USE_ALPHA_ATLAS_TEXTURE\n o.a *= texture2D(texture, v_uv0 + vec2(0, 0.5)).r;\n #endif\n #endif\n o *= v_color;\n ALPHA_TEST(o);\n vec2 uv = v_uv0.xy - vec2(0.5, 0.5);\n float rx = abs(uv.x) - (0.5 - edge);\n float ry = abs(uv.y) - (0.5 - edge);\n float mx = step(0.5 - edge, abs(uv.x));\n float my = step(0.5 - edge, abs(uv.y));\n float radius = length(vec2(rx, ry));\n float a = 1.0 - mx * my * step(edge, radius) * smoothstep(0., edge * 0.01, radius - edge);\n gl_FragColor = vec4(o.rgb, o.a * a);\n}" 13 | } 14 | } 15 | ], 16 | "subMetas": {} 17 | } -------------------------------------------------------------------------------- /assets/Effect/CircleAvatar.mtl: -------------------------------------------------------------------------------- 1 | { 2 | "__type__": "cc.Material", 3 | "_name": "CircleAvatar", 4 | "_objFlags": 0, 5 | "_native": "", 6 | "_effectAsset": { 7 | "__uuid__": "bdfafdd7-2814-43f0-918c-ca06cc6630fb" 8 | }, 9 | "_techniqueIndex": 0, 10 | "_techniqueData": { 11 | "0": { 12 | "defines": { 13 | "USE_TEXTURE": true 14 | }, 15 | "props": { 16 | "edge": 0.15 17 | } 18 | } 19 | } 20 | } -------------------------------------------------------------------------------- /assets/Effect/CircleAvatar.mtl.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.3", 3 | "uuid": "8f5c94a1-8c8c-48b7-a3d4-1217c14fda7b", 4 | "dataAsSubAsset": null, 5 | "subMetas": {} 6 | } -------------------------------------------------------------------------------- /assets/Scene.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "29f52784-2fca-467b-92e7-8fd9ef8c57b7", 4 | "isGroup": false, 5 | "subMetas": {} 6 | } -------------------------------------------------------------------------------- /assets/Scene/helloworld.fire: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "__type__": "cc.SceneAsset", 4 | "_name": "", 5 | "_objFlags": 0, 6 | "_native": "", 7 | "scene": { 8 | "__id__": 1 9 | } 10 | }, 11 | { 12 | "__type__": "cc.Scene", 13 | "_objFlags": 0, 14 | "_parent": null, 15 | "_children": [ 16 | { 17 | "__id__": 2 18 | } 19 | ], 20 | "_active": true, 21 | "_components": [], 22 | "_prefab": null, 23 | "_opacity": 255, 24 | "_color": { 25 | "__type__": "cc.Color", 26 | "r": 255, 27 | "g": 255, 28 | "b": 255, 29 | "a": 255 30 | }, 31 | "_contentSize": { 32 | "__type__": "cc.Size", 33 | "width": 0, 34 | "height": 0 35 | }, 36 | "_anchorPoint": { 37 | "__type__": "cc.Vec2", 38 | "x": 0, 39 | "y": 0 40 | }, 41 | "_trs": { 42 | "__type__": "TypedArray", 43 | "ctor": "Float64Array", 44 | "array": [ 45 | 0, 46 | 0, 47 | 0, 48 | 0, 49 | 0, 50 | 0, 51 | 1, 52 | 1, 53 | 1, 54 | 1 55 | ] 56 | }, 57 | "_is3DNode": true, 58 | "_groupIndex": 0, 59 | "groupIndex": 0, 60 | "autoReleaseAssets": false, 61 | "_id": "2d2f792f-a40c-49bb-a189-ed176a246e49" 62 | }, 63 | { 64 | "__type__": "cc.Node", 65 | "_name": "Canvas", 66 | "_objFlags": 0, 67 | "_parent": { 68 | "__id__": 1 69 | }, 70 | "_children": [ 71 | { 72 | "__id__": 3 73 | }, 74 | { 75 | "__id__": 5 76 | }, 77 | { 78 | "__id__": 8 79 | } 80 | ], 81 | "_active": true, 82 | "_components": [ 83 | { 84 | "__id__": 11 85 | }, 86 | { 87 | "__id__": 12 88 | } 89 | ], 90 | "_prefab": null, 91 | "_opacity": 255, 92 | "_color": { 93 | "__type__": "cc.Color", 94 | "r": 252, 95 | "g": 252, 96 | "b": 252, 97 | "a": 255 98 | }, 99 | "_contentSize": { 100 | "__type__": "cc.Size", 101 | "width": 960, 102 | "height": 640 103 | }, 104 | "_anchorPoint": { 105 | "__type__": "cc.Vec2", 106 | "x": 0.5, 107 | "y": 0.5 108 | }, 109 | "_trs": { 110 | "__type__": "TypedArray", 111 | "ctor": "Float64Array", 112 | "array": [ 113 | 480, 114 | 320, 115 | 0, 116 | 0, 117 | 0, 118 | 0, 119 | 1, 120 | 1, 121 | 1, 122 | 1 123 | ] 124 | }, 125 | "_eulerAngles": { 126 | "__type__": "cc.Vec3", 127 | "x": 0, 128 | "y": 0, 129 | "z": 0 130 | }, 131 | "_skewX": 0, 132 | "_skewY": 0, 133 | "_is3DNode": false, 134 | "_groupIndex": 0, 135 | "groupIndex": 0, 136 | "_id": "a286bbGknJLZpRpxROV6M94" 137 | }, 138 | { 139 | "__type__": "cc.Node", 140 | "_name": "Main Camera", 141 | "_objFlags": 0, 142 | "_parent": { 143 | "__id__": 2 144 | }, 145 | "_children": [], 146 | "_active": true, 147 | "_components": [ 148 | { 149 | "__id__": 4 150 | } 151 | ], 152 | "_prefab": null, 153 | "_opacity": 255, 154 | "_color": { 155 | "__type__": "cc.Color", 156 | "r": 255, 157 | "g": 255, 158 | "b": 255, 159 | "a": 255 160 | }, 161 | "_contentSize": { 162 | "__type__": "cc.Size", 163 | "width": 0, 164 | "height": 0 165 | }, 166 | "_anchorPoint": { 167 | "__type__": "cc.Vec2", 168 | "x": 0.5, 169 | "y": 0.5 170 | }, 171 | "_trs": { 172 | "__type__": "TypedArray", 173 | "ctor": "Float64Array", 174 | "array": [ 175 | 0, 176 | 0, 177 | 373.2569490310931, 178 | 0, 179 | 0, 180 | 0, 181 | 1, 182 | 1, 183 | 1, 184 | 1 185 | ] 186 | }, 187 | "_eulerAngles": { 188 | "__type__": "cc.Vec3", 189 | "x": 0, 190 | "y": 0, 191 | "z": 0 192 | }, 193 | "_skewX": 0, 194 | "_skewY": 0, 195 | "_is3DNode": false, 196 | "_groupIndex": 0, 197 | "groupIndex": 0, 198 | "_id": "80bqu0z/1K87+cRCeqwhmz" 199 | }, 200 | { 201 | "__type__": "cc.Camera", 202 | "_name": "", 203 | "_objFlags": 0, 204 | "node": { 205 | "__id__": 3 206 | }, 207 | "_enabled": true, 208 | "_cullingMask": 4294967295, 209 | "_clearFlags": 7, 210 | "_backgroundColor": { 211 | "__type__": "cc.Color", 212 | "r": 0, 213 | "g": 0, 214 | "b": 0, 215 | "a": 255 216 | }, 217 | "_depth": -1, 218 | "_zoomRatio": 1, 219 | "_targetTexture": null, 220 | "_fov": 60, 221 | "_orthoSize": 10, 222 | "_nearClip": 1, 223 | "_farClip": 4096, 224 | "_ortho": true, 225 | "_rect": { 226 | "__type__": "cc.Rect", 227 | "x": 0, 228 | "y": 0, 229 | "width": 1, 230 | "height": 1 231 | }, 232 | "_renderStages": 1, 233 | "_alignWithScreen": true, 234 | "_id": "50z75Ke7BAGI1Bm0Ed4bid" 235 | }, 236 | { 237 | "__type__": "cc.Node", 238 | "_name": "background", 239 | "_objFlags": 0, 240 | "_parent": { 241 | "__id__": 2 242 | }, 243 | "_children": [], 244 | "_active": true, 245 | "_components": [ 246 | { 247 | "__id__": 6 248 | }, 249 | { 250 | "__id__": 7 251 | } 252 | ], 253 | "_prefab": null, 254 | "_opacity": 255, 255 | "_color": { 256 | "__type__": "cc.Color", 257 | "r": 0, 258 | "g": 0, 259 | "b": 0, 260 | "a": 255 261 | }, 262 | "_contentSize": { 263 | "__type__": "cc.Size", 264 | "width": 960, 265 | "height": 640 266 | }, 267 | "_anchorPoint": { 268 | "__type__": "cc.Vec2", 269 | "x": 0.5, 270 | "y": 0.5 271 | }, 272 | "_trs": { 273 | "__type__": "TypedArray", 274 | "ctor": "Float64Array", 275 | "array": [ 276 | 0, 277 | 0, 278 | 0, 279 | 0, 280 | 0, 281 | 0, 282 | 1, 283 | 1, 284 | 1, 285 | 1 286 | ] 287 | }, 288 | "_eulerAngles": { 289 | "__type__": "cc.Vec3", 290 | "x": 0, 291 | "y": 0, 292 | "z": 0 293 | }, 294 | "_skewX": 0, 295 | "_skewY": 0, 296 | "_is3DNode": false, 297 | "_groupIndex": 0, 298 | "groupIndex": 0, 299 | "_id": "e2e0crkOLxGrpMxpbC4iQg1" 300 | }, 301 | { 302 | "__type__": "cc.Widget", 303 | "_name": "", 304 | "_objFlags": 0, 305 | "node": { 306 | "__id__": 5 307 | }, 308 | "_enabled": true, 309 | "alignMode": 0, 310 | "_target": null, 311 | "_alignFlags": 45, 312 | "_left": 0, 313 | "_right": 0, 314 | "_top": 0, 315 | "_bottom": 0, 316 | "_verticalCenter": 0, 317 | "_horizontalCenter": 0, 318 | "_isAbsLeft": true, 319 | "_isAbsRight": true, 320 | "_isAbsTop": true, 321 | "_isAbsBottom": true, 322 | "_isAbsHorizontalCenter": true, 323 | "_isAbsVerticalCenter": true, 324 | "_originalWidth": 200, 325 | "_originalHeight": 150, 326 | "_id": "45dxFhC89LVaBAAztzacqO" 327 | }, 328 | { 329 | "__type__": "cc.Sprite", 330 | "_name": "", 331 | "_objFlags": 0, 332 | "node": { 333 | "__id__": 5 334 | }, 335 | "_enabled": true, 336 | "_materials": [ 337 | { 338 | "__uuid__": "eca5d2f2-8ef6-41c2-bbe6-f9c79d09c432" 339 | } 340 | ], 341 | "_srcBlendFactor": 770, 342 | "_dstBlendFactor": 771, 343 | "_spriteFrame": { 344 | "__uuid__": "a23235d1-15db-4b95-8439-a2e005bfff91" 345 | }, 346 | "_type": 1, 347 | "_sizeMode": 0, 348 | "_fillType": 0, 349 | "_fillCenter": { 350 | "__type__": "cc.Vec2", 351 | "x": 0, 352 | "y": 0 353 | }, 354 | "_fillStart": 0, 355 | "_fillRange": 0, 356 | "_isTrimmedMode": true, 357 | "_atlas": null, 358 | "_id": "0c64ws2fZDr7paPAKtevXP" 359 | }, 360 | { 361 | "__type__": "cc.Node", 362 | "_name": "avatar", 363 | "_objFlags": 0, 364 | "_parent": { 365 | "__id__": 2 366 | }, 367 | "_children": [], 368 | "_active": true, 369 | "_components": [ 370 | { 371 | "__id__": 9 372 | }, 373 | { 374 | "__id__": 10 375 | } 376 | ], 377 | "_prefab": null, 378 | "_opacity": 255, 379 | "_color": { 380 | "__type__": "cc.Color", 381 | "r": 255, 382 | "g": 255, 383 | "b": 255, 384 | "a": 255 385 | }, 386 | "_contentSize": { 387 | "__type__": "cc.Size", 388 | "width": 60, 389 | "height": 60 390 | }, 391 | "_anchorPoint": { 392 | "__type__": "cc.Vec2", 393 | "x": 0.5, 394 | "y": 0.5 395 | }, 396 | "_trs": { 397 | "__type__": "TypedArray", 398 | "ctor": "Float64Array", 399 | "array": [ 400 | 0, 401 | 0, 402 | 0, 403 | 0, 404 | 0, 405 | 0, 406 | 1, 407 | 1, 408 | 1, 409 | 1 410 | ] 411 | }, 412 | "_eulerAngles": { 413 | "__type__": "cc.Vec3", 414 | "x": 0, 415 | "y": 0, 416 | "z": 0 417 | }, 418 | "_skewX": 0, 419 | "_skewY": 0, 420 | "_is3DNode": false, 421 | "_groupIndex": 0, 422 | "groupIndex": 0, 423 | "_id": "0fGqDWWxpLDr8qPIbLGD5b" 424 | }, 425 | { 426 | "__type__": "cc.Sprite", 427 | "_name": "", 428 | "_objFlags": 0, 429 | "node": { 430 | "__id__": 8 431 | }, 432 | "_enabled": true, 433 | "_materials": [ 434 | { 435 | "__uuid__": "8f5c94a1-8c8c-48b7-a3d4-1217c14fda7b" 436 | } 437 | ], 438 | "_srcBlendFactor": 770, 439 | "_dstBlendFactor": 771, 440 | "_spriteFrame": { 441 | "__uuid__": "155c62db-321b-4700-8ff1-51813b49a3c8" 442 | }, 443 | "_type": 0, 444 | "_sizeMode": 0, 445 | "_fillType": 0, 446 | "_fillCenter": { 447 | "__type__": "cc.Vec2", 448 | "x": 0, 449 | "y": 0 450 | }, 451 | "_fillStart": 0, 452 | "_fillRange": 0, 453 | "_isTrimmedMode": false, 454 | "_atlas": null, 455 | "_id": "57VB6nx55BbZctN3iJ3xh1" 456 | }, 457 | { 458 | "__type__": "948d6zjNBRNCqcIOCCT3JgC", 459 | "_name": "", 460 | "_objFlags": 0, 461 | "node": { 462 | "__id__": 8 463 | }, 464 | "_enabled": true, 465 | "_id": "49pzHOMrlH6oVBOCfN5wEC" 466 | }, 467 | { 468 | "__type__": "cc.Canvas", 469 | "_name": "", 470 | "_objFlags": 0, 471 | "node": { 472 | "__id__": 2 473 | }, 474 | "_enabled": true, 475 | "_designResolution": { 476 | "__type__": "cc.Size", 477 | "width": 960, 478 | "height": 640 479 | }, 480 | "_fitWidth": false, 481 | "_fitHeight": true, 482 | "_id": "2cgGOXKhVHd7IHQFtC1/zk" 483 | }, 484 | { 485 | "__type__": "cc.Widget", 486 | "_name": "", 487 | "_objFlags": 0, 488 | "node": { 489 | "__id__": 2 490 | }, 491 | "_enabled": true, 492 | "alignMode": 1, 493 | "_target": null, 494 | "_alignFlags": 45, 495 | "_left": 0, 496 | "_right": 0, 497 | "_top": 0, 498 | "_bottom": 0, 499 | "_verticalCenter": 0, 500 | "_horizontalCenter": 0, 501 | "_isAbsLeft": true, 502 | "_isAbsRight": true, 503 | "_isAbsTop": true, 504 | "_isAbsBottom": true, 505 | "_isAbsHorizontalCenter": true, 506 | "_isAbsVerticalCenter": true, 507 | "_originalWidth": 0, 508 | "_originalHeight": 0, 509 | "_id": "f5Ko14nQdBaZsJhvQqyJ2e" 510 | } 511 | ] -------------------------------------------------------------------------------- /assets/Scene/helloworld.fire.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.2.6", 3 | "uuid": "2d2f792f-a40c-49bb-a189-ed176a246e49", 4 | "asyncLoadAssets": false, 5 | "autoReleaseAssets": false, 6 | "subMetas": {} 7 | } -------------------------------------------------------------------------------- /assets/Script.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "4734c20c-0db8-4eb2-92ea-e692f4d70934", 4 | "isGroup": false, 5 | "subMetas": {} 6 | } -------------------------------------------------------------------------------- /assets/Script/CircleAvatar.ts: -------------------------------------------------------------------------------- 1 | 2 | const {ccclass, property} = cc._decorator; 3 | 4 | interface NodeAttr { 5 | /** 缩放 */ 6 | scale: number, 7 | /** 角度 */ 8 | angle: number, 9 | /** x 位置 */ 10 | x: number, 11 | /** y 位置 */ 12 | y: number, 13 | /** 位置 */ 14 | position: cc.Vec2 | cc.Vec3, 15 | /** 透明度 */ 16 | opactiy: number, 17 | } 18 | 19 | @ccclass 20 | export default class CircleAvatar extends cc.Component { 21 | 22 | private time: number; 23 | 24 | protected onLoad() { 25 | this.time = 0; 26 | } 27 | 28 | protected start() { 29 | // cc.tween(this.node) 30 | // .repeatForever( 31 | // cc.tween().to(1, { scale: 2, angle: -360 } as NodeAttr) 32 | // .call(() => { console.log("tween action callback") }) 33 | // .to(1, { scale: 1.0, angle: 0 } as NodeAttr) 34 | // ) 35 | // .start() 36 | // this.scheduleOnce(() => { 37 | // console.log("stopAllActions"); 38 | // this.node.stopAllActions(); 39 | // }, 5); 40 | } 41 | 42 | protected update(dt: number) { 43 | this.time += dt; 44 | const edge = Math.abs(Math.sin(this.time)) / 2; 45 | const sprite = this.node.getComponent(cc.Sprite); 46 | const material = sprite.getMaterial(0); 47 | material.setProperty("edge", edge); 48 | sprite.setMaterial(0, material); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /assets/Script/CircleAvatar.ts.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.5", 3 | "uuid": "948d6ce3-3414-4d0a-a708-382093dc9802", 4 | "isPlugin": false, 5 | "loadPluginInWeb": true, 6 | "loadPluginInNative": true, 7 | "loadPluginInEditor": false, 8 | "subMetas": {} 9 | } -------------------------------------------------------------------------------- /assets/Texture.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "1.0.1", 3 | "uuid": "7b81d4e8-ec84-4716-968d-500ac1d78a54", 4 | "isGroup": false, 5 | "subMetas": {} 6 | } -------------------------------------------------------------------------------- /assets/Texture/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanjifa/shader-demo/f0fd074d88d68e7be36267547bf4d6fa9ad2d2ff/assets/Texture/avatar.png -------------------------------------------------------------------------------- /assets/Texture/avatar.png.meta: -------------------------------------------------------------------------------- 1 | { 2 | "ver": "2.3.4", 3 | "uuid": "87dc032b-81b0-4046-839c-530f07000a24", 4 | "type": "sprite", 5 | "wrapMode": "clamp", 6 | "filterMode": "bilinear", 7 | "premultiplyAlpha": false, 8 | "genMipmaps": false, 9 | "packable": false, 10 | "width": 150, 11 | "height": 150, 12 | "platformSettings": {}, 13 | "subMetas": { 14 | "avatar": { 15 | "ver": "1.0.4", 16 | "uuid": "155c62db-321b-4700-8ff1-51813b49a3c8", 17 | "rawTextureUuid": "87dc032b-81b0-4046-839c-530f07000a24", 18 | "trimType": "auto", 19 | "trimThreshold": 1, 20 | "rotated": false, 21 | "offsetX": 0, 22 | "offsetY": 0, 23 | "trimX": 0, 24 | "trimY": 0, 25 | "width": 150, 26 | "height": 150, 27 | "rawWidth": 150, 28 | "rawHeight": 150, 29 | "borderTop": 0, 30 | "borderBottom": 0, 31 | "borderLeft": 0, 32 | "borderRight": 0, 33 | "subMetas": {} 34 | } 35 | } 36 | } -------------------------------------------------------------------------------- /jsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "es6", 4 | "module": "commonjs", 5 | "experimentalDecorators": true 6 | }, 7 | "exclude": [ 8 | "node_modules", 9 | ".vscode", 10 | "library", 11 | "local", 12 | "settings", 13 | "temp" 14 | ] 15 | } -------------------------------------------------------------------------------- /project.json: -------------------------------------------------------------------------------- 1 | { 2 | "engine": "cocos2d-html5", 3 | "packages": "packages", 4 | "version": "2.3.0", 5 | "id": "6564410a-2f6b-4fdf-be5b-df66b7dbf61b" 6 | } -------------------------------------------------------------------------------- /settings/builder.json: -------------------------------------------------------------------------------- 1 | { 2 | "excludeScenes": [], 3 | "orientation": { 4 | "landscapeLeft": true, 5 | "landscapeRight": true, 6 | "portrait": false, 7 | "upsideDown": false 8 | }, 9 | "packageName": "org.cocos2d.helloworld", 10 | "startScene": "2d2f792f-a40c-49bb-a189-ed176a246e49", 11 | "title": "hello_world", 12 | "webOrientation": "auto" 13 | } -------------------------------------------------------------------------------- /settings/builder.panel.json: -------------------------------------------------------------------------------- 1 | { 2 | "excludeScenes": [], 3 | "packageName": "org.cocos2d.helloworld", 4 | "platform": "web-mobile", 5 | "startScene": "2d2f792f-a40c-49bb-a189-ed176a246e49", 6 | "title": "HelloWorld" 7 | } -------------------------------------------------------------------------------- /settings/project.json: -------------------------------------------------------------------------------- 1 | { 2 | "collision-matrix": [ 3 | [ 4 | true 5 | ] 6 | ], 7 | "excluded-modules": [ 8 | "3D Physics/cannon.js", 9 | "3D Physics/Builtin", 10 | "3D Particle" 11 | ], 12 | "group-list": [ 13 | "default" 14 | ], 15 | "start-scene": "current", 16 | "design-resolution-width": 960, 17 | "design-resolution-height": 640, 18 | "fit-width": false, 19 | "fit-height": true, 20 | "use-project-simulator-setting": false, 21 | "simulator-orientation": false, 22 | "use-customize-simulator": false, 23 | "simulator-resolution": { 24 | "width": 960, 25 | "height": 640 26 | }, 27 | "last-module-event-record-time": 0, 28 | "assets-sort-type": "name", 29 | "facebook": { 30 | "enable": false, 31 | "appID": "", 32 | "live": { 33 | "enable": false 34 | }, 35 | "audience": { 36 | "enable": false 37 | } 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /settings/services.json: -------------------------------------------------------------------------------- 1 | { 2 | "services": [ 3 | { 4 | "service_id": "235", 5 | "service_name": "Cocos Analytics", 6 | "service_icon": "https://account.cocos.com/client/3f8f31ccf66995e183044f167c092395.png", 7 | "service_desc": "提供最核心最基本的数据、标准化界面功能简洁易用、数据准确性最好", 8 | "service_title": "精准了解游戏的新增、活跃、留存、付费等数据", 9 | "service_guide_url": "https://n-analytics.cocos.com/docs/", 10 | "service_sample_url": "https://github.com/cocos-creator/tutorial-dark-slash/tree/analytics", 11 | "service_dev_url": "http://analytics.cocos.com/realtime/jump_to/", 12 | "service_type": "3", 13 | "service_type_zh": "公司和个人游戏", 14 | "support_platform": [ 15 | "Android", 16 | "iOS", 17 | "HTML5" 18 | ], 19 | "package_download_url": "https://download.cocos.com/CocosServices/plugins/service-analytics/1.2.0_2.1.0.zip", 20 | "package_version_desc": "更新日期:2019/6/10
\n
更新说明:
\n1、优化SDK,修复H5-SDK 与多个小游戏平台适配问题,删除和优化init事件无用接口
\n2、如有相关问题咨询或者需求, 可以联系我们技术支持邮箱 support-cocos@cocos.com", 21 | "service_component_name": "service-analytics", 22 | "package_versions": [ 23 | "1.2.1_2.1.0", 24 | "1.2.0_2.1.0", 25 | "1.1.7_2.0.3", 26 | "1.1.6_2.0.1_2.0.2", 27 | "1.1.5_2.0.1", 28 | "1.1.4_2.0.1", 29 | "1.1.3_2.0.1", 30 | "1.1.2_2.0.0", 31 | "1.0.0_1.0.5" 32 | ], 33 | "build_platform": [], 34 | "require_verify": 0, 35 | "service_price": "", 36 | "service_protocol": "游戏首次开启该服务时,Cocos会后台通知服务方为游戏开通服务并初始化参数,服务方根据需要可能会获取您的Cocos账户信息,包括账户基本资料、游戏基本资料、账户余额等,点击确认开通按钮即视为您同意该服务访问您的账户信息,详见《Cocos用户服务协议》《Cocos隐私政策》" 37 | }, 38 | { 39 | "service_id": "241", 40 | "service_name": "Matchvs", 41 | "service_icon": "https://account.cocos.com/client/14406719a07eb3d714d36e5edc6e06fa.png", 42 | "service_desc": "通过SDK接入快速实现联网功能、帧同步、国内外多节点、服务器独立部署、gameServer自定义游戏服务端逻辑。", 43 | "service_title": "专业成熟的移动游戏联网与服务端解决方案", 44 | "service_guide_url": "http://doc.matchvs.com/QuickStart/QuickStart-CocosCreator", 45 | "service_sample_url": "http://www.matchvs.com/serviceCourse", 46 | "service_dev_url": "http://www.matchvs.com/cocosLogin", 47 | "service_type": "3", 48 | "service_type_zh": "公司和个人游戏", 49 | "support_platform": [ 50 | "Android", 51 | "iOS", 52 | "HTML5" 53 | ], 54 | "package_download_url": "https://download.cocos.com/CocosServices/plugins/service-matchvs/1.0.9_3.7.9.9.zip", 55 | "package_version_desc": "

更新日期: 2019/07/18\n更新内容:\n1、修复多节点登录返回值错误\n2、修复FaceBook平台受限安全策略的问题

", 56 | "service_component_name": "service-matchvs", 57 | "package_versions": [ 58 | "1.0.9_3.7.9.9", 59 | "1.0.7_3.7.9.6", 60 | "1.0.6_3.7.9.2", 61 | "1.0.5_3.7.7.3", 62 | "1.0.3_3.7.6.4" 63 | ], 64 | "build_platform": [], 65 | "require_verify": 0, 66 | "service_price": "该服务按使用量计费,计费规则,所产生的费用将由第三方从您的 Cocos 账户余额 中扣除。", 67 | "service_protocol": "游戏首次开启该服务时,Cocos会后台通知服务方为游戏开通服务并初始化参数,服务方根据需要可能会获取您的Cocos账户信息,包括账户基本资料、游戏基本资料、账户余额等,点击确认开通按钮即视为您同意该服务访问您的账户信息,详见《Cocos用户服务协议》《Cocos隐私政策》" 68 | }, 69 | { 70 | "service_id": "242", 71 | "service_name": "Agora Voice", 72 | "service_icon": "https://account.cocos.com/uploads/client_icon/2019-07-16/273952d155b4cdb72d2b1bc61de91ade.png", 73 | "service_desc": "稳定、低耗、76ms超低延时、全球200+数据中心覆盖;变声器、超高音质、听声辩位等丰富玩法极速接入;全平台支持:Android、iOS、Web。", 74 | "service_title": "游戏内置实时语音", 75 | "service_guide_url": "https://docs.agora.io/cn/Interactive Gaming/game_c?platform=Cocos Creator", 76 | "service_sample_url": "https://github.com/AgoraIO/Voice-Call-for-Mobile-Gaming/tree/master/Basic-Voice-Call-for-Gaming/Hello-CocosCreator-Voice-Agora", 77 | "service_dev_url": "https://sso.agora.io/api/oauth/cocos/login", 78 | "service_type": "3", 79 | "service_type_zh": "公司和个人游戏", 80 | "support_platform": [ 81 | "Android", 82 | "iOS", 83 | "HTML5" 84 | ], 85 | "package_download_url": "https://download.cocos.com/CocosServices/plugins/service-agora/1.0.2_2.2.3.20_2.5.2.zip", 86 | "package_version_desc": "更新日期:2019/06/27
\n
更新内容:
\n1、修复部分BUG
\n2、代码优化", 87 | "service_component_name": "service-agora", 88 | "package_versions": [ 89 | "1.0.2_2.2.3.20_2.5.2", 90 | "1.0.1_2.2.3.20_2.5.2" 91 | ], 92 | "build_platform": [], 93 | "require_verify": 1, 94 | "service_price": "该服务按使用量计费,计费规则,所产生的费用将由第三方从您的 Cocos 账户余额 中扣除。", 95 | "service_protocol": "游戏首次开启该服务时,Cocos会后台通知服务方为游戏开通服务并初始化参数,服务方根据需要可能会获取您的Cocos账户信息,包括账户基本资料、游戏基本资料、账户余额等,点击确认开通按钮即视为您同意该服务访问您的账户信息,详见《Cocos用户服务协议》《Cocos隐私政策》" 96 | } 97 | ], 98 | "game": { 99 | "name": "未知游戏", 100 | "appid": "UNKNOW" 101 | } 102 | } -------------------------------------------------------------------------------- /template-banner.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/yanjifa/shader-demo/f0fd074d88d68e7be36267547bf4d6fa9ad2d2ff/template-banner.png -------------------------------------------------------------------------------- /template.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "TEMPLATES.helloworld-ts.name", 3 | "desc": "TEMPLATES.helloworld-ts.desc", 4 | "banner": "template-banner.png" 5 | } -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "module": "commonjs", 4 | "lib": [ "dom", "es5", "es2015.promise" ], 5 | "target": "es5", 6 | "allowJs": true, 7 | "experimentalDecorators": true, 8 | "skipLibCheck": true 9 | }, 10 | "exclude": [ 11 | "node_modules", 12 | "library", 13 | "local", 14 | "temp", 15 | "build", 16 | "settings" 17 | ] 18 | } 19 | --------------------------------------------------------------------------------