Cocos Creator 3.0 正式版震撼来袭!

webstorm支持ts所有特性,但是webstorm不支持对排除文件夹中的文件的引入,而且对工程外部文件的引入也需要单独引入,需要额外的操作。

那我建议可以提供另一种api引入的方式,像cocos creator之前一样拷贝到工程目录下,然后自行更新api

scrollview 中的mask之外的区域也能点击到
image
如图红色区域是mask ,蓝色区域是mask之外,点击也可以触发

tiledmap加载资源失败 望修复

@jare 还是scrollview 中的mask之外的区域也能点击到
不过是手动加载的item
image
GIF3
第一个scrollview 是编辑器添加item,区域外滑动item位置没有影响
第二个scrollview是代码加的item,可以看到滑动item位置会影响整个view,收到了点击事件

3.0 rc 版还没问题,正式版出现的

https://github.com/cocos-creator/engine/pull/8313
mask穿透的修复pr

@jare 想这个编辑器一开始就崩掉的怎么弄?没法开发啊

这问题怎么办啊? 在win10没有问题 win7就是崩溃

这问题怎么办啊? 在win10没有问题 win7就是崩溃

大佬们先解决一下 场景编辑器崩的问题出个版本嘛 其它问题慢慢 再处理呗

我们在和 Electron 协调找问题原因

https://github.com/electron/electron/issues/27903

但是时间不可预估

后期考虑用c#重搞编辑器么 :smile:

3.0实在不稳定,新建项目就报错,完全没法用,,,,


[Asset DB] util/profiler.effect - profiler-fs:frag: Error EFX2406: compilation failed: ↓↓↓↓↓ EXPAND THIS MESSAGE FOR MORE INFO ↓↓↓↓↓1 #version 1002 #define CC_USE_HDR 13 4 precision mediump float;5 uniform highp mat4 cc_matViewProj;6 7 8 9 10 attribute vec3 a_position;11 attribute vec4 a_color;12 varying vec2 v_uv;13 14 uniform vec4 offset;15 16 17 uniform vec4 digits[20];18 19 20 float getComponent(vec4 v, float i) {21 if (i < 1.0) { return v.x; }22 else if (i < 2.0) { return v.y; }23 else if (i < 3.0) { return v.z; }24 else { return v.w; }25 }26 27 vec4 vert () {28 vec4 position = cc_matViewProj * vec4(a_position, 1.0);29 position.xy += offset.xy;30 31 v_uv = a_color.xy;32 33 if (a_color.z >= 0.0) {34 float n = getComponent(digits[int(a_color.z)], a_color.w);35 v_uv += vec2(offset.z * n, 0.0);36 }37 38 return position;39 }40 41 void main() { gl_Position = vert(); }42


[Asset DB] util/sequence-anim.effect - unlit-fs:frag: Error EFX2406: compilation failed: ↓↓↓↓↓ EXPAND THIS MESSAGE FOR MORE INFO ↓↓↓↓↓1 #version 1002 #define CC_USE_MORPH 13 #define CC_MORPH_TARGET_COUNT 24 #define CC_SUPPORT_FLOAT_TEXTURE 15 #define CC_MORPH_PRECOMPUTED 16 #define CC_MORPH_TARGET_HAS_POSITION 17 #define CC_MORPH_TARGET_HAS_NORMAL 18 #define CC_MORPH_TARGET_HAS_TANGENT 19 #define CC_USE_SKINNING 110 #define CC_USE_BAKED_ANIMATION 111 #define USE_INSTANCING 112 #define USE_BATCHING 113 #define USE_LIGHTMAP 114 #define USE_VERTEX_COLOR 115 #define USE_TEXTURE 116 #define USE_SEQUENCE_ANIM 117 #define FLIP_UV 118 #define MANUAL_PLAYBACK 119 #define CC_USE_HDR 120 #define USE_ALPHA_TEST 121 #define ALPHA_TEST_CHANNEL a22 23 precision highp float;24 25 26 27 28 29 30 31 32 highp float decode32 (highp vec4 rgba) {33 rgba = rgba * 255.0;34 highp float Sign = 1.0 - (step(128.0, (rgba[3]) + 0.5)) * 2.0;35 highp float Exponent = 2.0 * (mod(float(int((rgba[3]) + 0.5)), 128.0)) + (step(128.0, (rgba[2]) + 0.5)) - 127.0;36 highp float Mantissa = (mod(float(int((rgba[2]) + 0.5)), 128.0)) * 65536.0 + rgba[1] * 256.0 + rgba[0] + 8388608.0;37 return Sign * exp2(Exponent - 23.0) * Mantissa;38 }39 40 41 struct StandardVertInput {42 highp vec4 position;43 vec3 normal;44 vec4 tangent;45 };46 47 attribute vec3 a_position;48 attribute vec3 a_normal;49 attribute vec2 a_texCoord;50 attribute vec4 a_tangent;51 52 53 54 #if CC_USE_MORPH55 56 57 attribute float a_vertexId;58 int getVertexId() {59 return int(a_vertexId);60 }61 62 uniform vec4 cc_displacementWeights[15];63 uniform vec4 cc_displacementTextureInfo;64 65 66 67 vec2 getPixelLocation(vec2 textureResolution, int pixelIndex) {68 float pixelIndexF = float(pixelIndex);69 float x = mod(pixelIndexF, textureResolution.x);70 float y = floor(pixelIndexF / textureResolution.x);71 return vec2(x, y);72 }73 74 vec2 getPixelCoordFromLocation(vec2 location, vec2 textureResolution) {75 return (vec2(location.x, location.y) + .5) / textureResolution;76 }77 78 #if CC_SUPPORT_FLOAT_TEXTURE79 80 vec4 fetchVec3ArrayFromTexture(sampler2D tex, int elementIndex) {81 int pixelIndex = elementIndex;82 vec2 location = getPixelLocation(cc_displacementTextureInfo.xy, pixelIndex);83 vec2 uv = getPixelCoordFromLocation(location, cc_displacementTextureInfo.xy);84 return texture2D(tex, uv);85 }86 87 #else88 vec4 fetchVec3ArrayFromTexture(sampler2D tex, int elementIndex) {89 int pixelIndex = elementIndex * 4;90 vec2 location = getPixelLocation(cc_displacementTextureInfo.xy, pixelIndex);91 vec2 x = getPixelCoordFromLocation(location + vec2(0.0, 0.0), cc_displacementTextureInfo.xy);92 vec2 y = getPixelCoordFromLocation(location + vec2(1.0, 0.0), cc_displacementTextureInfo.xy);93 vec2 z = getPixelCoordFromLocation(location + vec2(2.0, 0.0), cc_displacementTextureInfo.xy);94 return vec4(95 decode32(texture2D(tex, x)),96 decode32(texture2D(tex, y)),97 decode32(texture2D(tex, z)),98 1.099 );100 }101 #endif102 103 float getDisplacementWeight(int index) {104 int quot = index / 4;105 int remainder = index - quot * 4;106 if (remainder == 0) {107 return cc_displacementWeights[quot].x;108 } else if (remainder == 1) {109 return cc_displacementWeights[quot].y;110 } else if (remainder == 2) {111 return cc_displacementWeights[quot].z;112 } else {113 return cc_displacementWeights[quot].w;114 }115 }116 117 vec3 getVec3DisplacementFromTexture(sampler2D tex, int vertexIndex) {118 #if CC_MORPH_PRECOMPUTED119 return fetchVec3ArrayFromTexture(tex, vertexIndex).rgb;120 #else121 vec3 result = vec3(0, 0, 0);122 int nVertices = int(cc_displacementTextureInfo.z);123 for (int iTarget = 0; iTarget < CC_MORPH_TARGET_COUNT; ++iTarget) {124 result += (fetchVec3ArrayFromTexture(tex, nVertices * iTarget + vertexIndex).rgb * getDisplacementWeight(iTarget));125 }126 return result;127 #endif128 }129 130 #if CC_MORPH_TARGET_HAS_POSITION131 uniform sampler2D cc_PositionDisplacements;132 vec3 getPositionDisplacement(int vertexId) {133 return getVec3DisplacementFromTexture(cc_PositionDisplacements, vertexId);134 }135 #endif136 137 #if CC_MORPH_TARGET_HAS_NORMAL138 uniform sampler2D cc_NormalDisplacements;139 vec3 getNormalDisplacement(int vertexId) {140 return getVec3DisplacementFromTexture(cc_NormalDisplacements, vertexId);141 }142 #endif143 144 #if CC_MORPH_TARGET_HAS_TANGENT145 uniform sampler2D cc_TangentDisplacements;146 vec3 getTangentDisplacement(int vertexId) {147 return getVec3DisplacementFromTexture(cc_TangentDisplacements, vertexId);148 }149 #endif150 151 void applyMorph (inout StandardVertInput attr) {152 int vertexId = getVertexId();153 154 #if CC_MORPH_TARGET_HAS_POSITION155 attr.position.xyz = attr.position.xyz + getPositionDisplacement(vertexId);156 #endif157 158 #if CC_MORPH_TARGET_HAS_NORMAL159 attr.normal.xyz = attr.normal.xyz + getNormalDisplacement(vertexId);160 #endif161 162 #if CC_MORPH_TARGET_HAS_TANGENT163 attr.tangent.xyz = attr.tangent.xyz + getTangentDisplacement(vertexId);164 #endif165 }166 167 void applyMorph (inout vec4 position) {168 #if CC_MORPH_TARGET_HAS_POSITION169 position.xyz = position.xyz + getPositionDisplacement(getVertexId());170 #endif171 }172 173 #endif174 #if CC_USE_SKINNING175 176 177 attribute vec4 a_joints;178 179 180 attribute vec4 a_weights;181 182 183 184 #if CC_USE_BAKED_ANIMATION185 #if USE_INSTANCING186 attribute highp vec4 a_jointAnimInfo;187 #endif188 uniform highp vec4 cc_jointTextureInfo;189 uniform highp vec4 cc_jointAnimInfo;190 uniform highp sampler2D cc_jointTexture;191 192 #else193 uniform highp vec4 cc_joints[90];194 195 #endif196 197 198 199 200 #if CC_USE_BAKED_ANIMATION201 #if CC_SUPPORT_FLOAT_TEXTURE202 mat4 getJointMatrix (float i) {203 204 #if USE_INSTANCING 205 highp float j = 3.0 * (a_jointAnimInfo.x * a_jointAnimInfo.y + i) + a_jointAnimInfo.z; 206 #else 207 highp float j = 3.0 * (cc_jointAnimInfo.x * cc_jointTextureInfo.y + i) + cc_jointTextureInfo.z; 208 #endif 209 highp float invSize = cc_jointTextureInfo.w; 210 highp float y = floor(j * invSize); 211 highp float x = j - y * cc_jointTextureInfo.x; 212 y = (y + 0.5) * invSize; 213 vec4 v1 = texture2D(cc_jointTexture, vec2((x + 0.5) * invSize, y));214 vec4 v2 = texture2D(cc_jointTexture, vec2((x + 1.5) * invSize, y));215 vec4 v3 = texture2D(cc_jointTexture, vec2((x + 2.5) * invSize, y));216 return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));217 }218 #else219 mat4 getJointMatrix (float i) {220 221 #if USE_INSTANCING 222 highp float j = 12.0 * (a_jointAnimInfo.x * a_jointAnimInfo.y + i) + a_jointAnimInfo.z; 223 #else 224 highp float j = 12.0 * (cc_jointAnimInfo.x * cc_jointTextureInfo.y + i) + cc_jointTextureInfo.z; 225 #endif 226 highp float invSize = cc_jointTextureInfo.w; 227 highp float y = floor(j * invSize); 228 highp float x = j - y * cc_jointTextureInfo.x; 229 y = (y + 0.5) * invSize; 230 vec4 v1 = vec4(231 decode32(texture2D(cc_jointTexture, vec2((x + 0.5) * invSize, y))),232 decode32(texture2D(cc_jointTexture, vec2((x + 1.5) * invSize, y))),233 decode32(texture2D(cc_jointTexture, vec2((x + 2.5) * invSize, y))),234 decode32(texture2D(cc_jointTexture, vec2((x + 3.5) * invSize, y)))235 );236 vec4 v2 = vec4(237 decode32(texture2D(cc_jointTexture, vec2((x + 4.5) * invSize, y))),238 decode32(texture2D(cc_jointTexture, vec2((x + 5.5) * invSize, y))),239 decode32(texture2D(cc_jointTexture, vec2((x + 6.5) * invSize, y))),240 decode32(texture2D(cc_jointTexture, vec2((x + 7.5) * invSize, y)))241 );242 vec4 v3 = vec4(243 decode32(texture2D(cc_jointTexture, vec2((x + 8.5) * invSize, y))),244 decode32(texture2D(cc_jointTexture, vec2((x + 9.5) * invSize, y))),245 decode32(texture2D(cc_jointTexture, vec2((x + 10.5) * invSize, y))),246 decode32(texture2D(cc_jointTexture, vec2((x + 11.5) * invSize, y)))247 );248 return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));249 }250 #endif251 #else252 mat4 getJointMatrix (float i) {253 int idx = int(i);254 vec4 v1 = cc_joints[idx * 3];255 vec4 v2 = cc_joints[idx * 3 + 1];256 vec4 v3 = cc_joints[idx * 3 + 2];257 return mat4(vec4(v1.xyz, 0.0), vec4(v2.xyz, 0.0), vec4(v3.xyz, 0.0), vec4(v1.w, v2.w, v3.w, 1.0));258 }259 #endif260 261 mat4 skinMatrix () {262 vec4 joints = vec4(a_joints);263 return getJointMatrix(joints.x) * a_weights.x264 + getJointMatrix(joints.y) * a_weights.y265 + getJointMatrix(joints.z) * a_weights.z266 + getJointMatrix(joints.w) * a_weights.w;267 }268 269 void CCSkin (inout vec4 position) {270 mat4 m = skinMatrix();271 position = m * position;272 }273 274 void CCSkin (inout StandardVertInput attr) {275 mat4 m = skinMatrix();276 attr.position = m * attr.position;277 attr.normal = (m * vec4(attr.normal, 0.0)).xyz;278 attr.tangent.xyz = (m * vec4(attr.tangent.xyz, 0.0)).xyz;279 }280 281 282 #endif283 uniform highp vec4 cc_time;284 uniform highp mat4 cc_matView;285 uniform highp mat4 cc_matProj;286 287 #if USE_INSTANCING288 attribute vec4 a_matWorld0;289 attribute vec4 a_matWorld1;290 attribute vec4 a_matWorld2;291 #if USE_LIGHTMAP292 attribute vec4 a_lightingMapUVParam;293 #endif294 #elif USE_BATCHING295 attribute float a_dyn_batch_id;296 uniform highp mat4 cc_matWorlds[10];297 298 #else299 uniform highp mat4 cc_matWorld;300 301 302 #endif303 304 305 306 307 #if USE_VERTEX_COLOR308 attribute lowp vec4 a_color;309 varying lowp vec4 v_color;310 #endif311 312 #if USE_TEXTURE313 varying vec2 v_uv;314 uniform vec4 tilingOffset;315 316 #if USE_SEQUENCE_ANIM317 uniform vec4 seqAnimParams;318 319 #endif320 #endif321 322 vec4 vert () {323 vec4 position;324 325 326 position = vec4(a_position, 1.0); 327 #if CC_USE_MORPH 328 applyMorph(position); 329 #endif 330 #if CC_USE_SKINNING 331 CCSkin(position); 332 #endif 333 334 mat4 matWorld;335 336 #if USE_INSTANCING 337 matWorld = mat4( 338 vec4(a_matWorld0.xyz, 0.0), 339 vec4(a_matWorld1.xyz, 0.0), 340 vec4(a_matWorld2.xyz, 0.0), 341 vec4(a_matWorld0.w, a_matWorld1.w, a_matWorld2.w, 1.0) 342 ); 343 #elif USE_BATCHING 344 matWorld = cc_matWorlds[int(a_dyn_batch_id)]; 345 #else 346 matWorld = cc_matWorld; 347 #endif 348 349 #if USE_TEXTURE350 v_uv = a_texCoord;351 #if FLIP_UV352 v_uv.y = 1.0 - v_uv.y;353 #endif354 v_uv = v_uv * tilingOffset.xy + tilingOffset.zw;355 #if USE_SEQUENCE_ANIM356 #if MANUAL_PLAYBACK357 float seqAnimCurFrame = clamp(seqAnimParams.w, 0.0, 0.999) * seqAnimParams.z;358 #else359 float seqAnimCurFrame = mod(cc_time.x, seqAnimParams.z / seqAnimParams.w) * seqAnimParams.w;360 #endif361 vec2 seqAnimOffset = floor(vec2(mod(seqAnimCurFrame, seqAnimParams.x), seqAnimCurFrame / seqAnimParams.x));362 v_uv = (v_uv + seqAnimOffset) / seqAnimParams.xy;363 #endif364 #endif365 366 #if USE_VERTEX_COLOR367 v_color = a_color;368 #endif369 370 return cc_matProj * (cc_matView * matWorld) * position;371 }372 373 void main() { gl_Position = vert(); }374

3.0RC版没有问题,新建项目正常,,,,,

是啊,希望官方能同时支持C#,以后拥抱webassembly。

tiled显示有问题
游戏内


编辑器

map.zip (904.9 KB)

弱弱的问一句 下个正式版的时间节点 现在BUG太多 尤其native下 如spine无法缓动,渲染ui花屏(右上角部分渲染了3次横在上面,web正常)