no message

This commit is contained in:
2026-06-16 16:27:02 +08:00
parent 6e0a1fbcbb
commit 33070ad827
2436 changed files with 183 additions and 1746 deletions

View File

@@ -0,0 +1,11 @@
{
"CORSRules": [
{
"AllowedOrigin": ["*"],
"AllowedMethod": ["GET", "HEAD"],
"AllowedHeader": ["*"],
"ExposeHeader": ["Content-Length", "Content-Type", "ETag"],
"MaxAgeSeconds": 86400
}
]
}

View File

@@ -55,6 +55,16 @@ server {
access_log off;
}
# 纯 CDN/cdn-unity/ → OSS 游戏包config.js unityCdnUseSiteProxy: true
# 路径需与 unityCdnRemote 保持一致,更新 OSS 目录时同步修改
location /cdn-unity/ {
proxy_pass https://oss.eanic.cn/001_code_cocos_res_20260616/;
proxy_ssl_server_name on;
proxy_set_header Host oss.eanic.cn;
proxy_hide_header Access-Control-Allow-Origin;
expires 7d;
}
location / {
try_files $uri $uri/ /index.html;
add_header Cache-Control "no-cache, no-store";

View File

@@ -12,6 +12,7 @@
"main": "./dist/scratch-gui.js",
"scripts": {
"build": "npm run clean && cross-env NODE_ENV=production webpack --colors --bail",
"build:cdn-pure": "npm run clean && cross-env NODE_ENV=production UNITY_CDN_PURE=1 webpack --colors --bail",
"build:test": "npm run clean && cross-env NODE_ENV=production node scripts\\patch-config.js && webpack --colors --bail",
"build:prod": "npm run clean && cross-env NODE_ENV=production node scripts\\patch-config.js && webpack --colors --bail",
"clean": "rimraf ./build && mkdirp build && rimraf ./dist && mkdirp dist",

View File

@@ -4,6 +4,7 @@ import VM from 'scratch-vm';
import Box from '../box/box.jsx';
import { STAGE_DISPLAY_SIZES } from '../../lib/layout-constants.js';
import CONFIG from '../../playground/config.js'; // 引入 config.js
import { getUnityCdnRoot, getUnityCdnBuildRoot, prefetchLevelsDatabase } from '../../lib/unity-cdn.js';
import RankBadgeGenerator from '../../playground/rank-badge-generator.js';
// import FriendToggle from '../friend-toggle/FriendToggle.js';
// import FriendListModal from '../friend-toggle/FriendListModal.js';
@@ -1230,10 +1231,11 @@ const UnityComponent = function (props) {
// if (canvas && !window.unityInstance) {
const unityUrl = "/unity";
const buildUrl = "/unity/Build";
const cdnurt = CONFIG.unitycdndir;
const cdnbuildurl = CONFIG.unitycdnbuilddir;
const noneurl = ''
const loaderUrl = buildUrl + "/mstest5.loader.js";
const cdnRoot = CONFIG.usecdn ? getUnityCdnRoot() : unityUrl;
const cdnBuildRoot = CONFIG.usecdn ? getUnityCdnBuildRoot() : buildUrl;
let loaderUrl = CONFIG.usecdn
? `${cdnBuildRoot}/mstest5.loader.js`
: `${buildUrl}/mstest5.loader.js`;
let config = {
dataUrl: buildUrl + "/mstest5.data.br",
frameworkUrl: buildUrl + "/mstest5.framework.js.br",
@@ -1245,10 +1247,10 @@ const UnityComponent = function (props) {
};
if (CONFIG.usecdn) {
config = {
dataUrl: cdnbuildurl + "/mstest5.data.br",
frameworkUrl: cdnbuildurl + "/mstest5.framework.js.br",
codeUrl: cdnbuildurl + "/mstest5.wasm.br",
streamingAssetsUrl: cdnurt + "/StreamingAssets",
dataUrl: cdnBuildRoot + "/mstest5.data.br",
frameworkUrl: cdnBuildRoot + "/mstest5.framework.js.br",
codeUrl: cdnBuildRoot + "/mstest5.wasm.br",
streamingAssetsUrl: cdnRoot + "/StreamingAssets",
// dataUrl: buildUrl + "/Build.data.br",
// frameworkUrl: buildUrl + "/Build.framework.js.br",
// codeUrl: buildUrl + "/Build.wasm.br",
@@ -1264,9 +1266,10 @@ const UnityComponent = function (props) {
script.onload = () => {
window.iscreate = 0;
createUnityInstance(canvas, config, (progress) => {
// console.log(`加载进度: ${progress * 100}%`);
}).then((unityInstance) => {
const boot = () => {
createUnityInstance(canvas, config, (progress) => {
// console.log(`加载进度: ${progress * 100}%`);
}).then((unityInstance) => {
window.unityInstance = unityInstance;
window.waitForUnityStepFinish = waitForUnityStepFinish;
window.waitForUnityVehicleStepFinish = waitForUnityVehicleStepFinish;
@@ -1289,6 +1292,15 @@ const UnityComponent = function (props) {
}).catch((message) => {
console.error(`Unity 实例创建失败: ${message}`);
});
};
if (CONFIG.usecdn) {
prefetchLevelsDatabase(cdnRoot).then(boot).catch((err) => {
console.error('[unity-cdn] 关卡库预取失败', err);
boot();
});
} else {
boot();
}
};
document.body.appendChild(script);

View File

@@ -4,6 +4,7 @@ import VM from 'scratch-vm';
import Box from '../box/box.jsx';
import { STAGE_DISPLAY_SIZES } from '../../lib/layout-constants.js';
import CONFIG from '../../playground/config.js'; // 引入 config.js
import { getUnityCdnRoot, getUnityCdnBuildRoot, prefetchLevelsDatabase } from '../../lib/unity-cdn.js';
import RankBadgeGenerator from '../../playground/rank-badge-generator.js';
// import FriendToggle from '../friend-toggle/FriendToggle.js';
// import FriendListModal from '../friend-toggle/FriendListModal.js';
@@ -1219,10 +1220,11 @@ const UnityComponent = function (props) {
// if (canvas && !window.unityInstance) {
const unityUrl = "/unity";
const buildUrl = "/unity/Build";
const cdnurt = CONFIG.unitycdndir;
const cdnbuildurl = CONFIG.unitycdnbuilddir;
const noneurl = ''
const loaderUrl = buildUrl + "/mstest5.loader.js";
const cdnRoot = CONFIG.usecdn ? getUnityCdnRoot() : unityUrl;
const cdnBuildRoot = CONFIG.usecdn ? getUnityCdnBuildRoot() : buildUrl;
let loaderUrl = CONFIG.usecdn
? `${cdnBuildRoot}/mstest5.loader.js`
: `${buildUrl}/mstest5.loader.js`;
let config = {
dataUrl: buildUrl + "/mstest5.data.br",
frameworkUrl: buildUrl + "/mstest5.framework.js.br",
@@ -1234,10 +1236,10 @@ const UnityComponent = function (props) {
};
if (CONFIG.usecdn) {
config = {
dataUrl: cdnbuildurl + "/mstest5.data.br",
frameworkUrl: cdnbuildurl + "/mstest5.framework.js.br",
codeUrl: cdnbuildurl + "/mstest5.wasm.br",
streamingAssetsUrl: cdnurt + "/StreamingAssets",
dataUrl: cdnBuildRoot + "/mstest5.data.br",
frameworkUrl: cdnBuildRoot + "/mstest5.framework.js.br",
codeUrl: cdnBuildRoot + "/mstest5.wasm.br",
streamingAssetsUrl: cdnRoot + "/StreamingAssets",
// dataUrl: buildUrl + "/Build.data.br",
// frameworkUrl: buildUrl + "/Build.framework.js.br",
// codeUrl: buildUrl + "/Build.wasm.br",
@@ -1253,9 +1255,10 @@ const UnityComponent = function (props) {
script.onload = () => {
window.iscreate = 0;
createUnityInstance(canvas, config, (progress) => {
// console.log(`加载进度: ${progress * 100}%`);
}).then((unityInstance) => {
const boot = () => {
createUnityInstance(canvas, config, (progress) => {
// console.log(`加载进度: ${progress * 100}%`);
}).then((unityInstance) => {
window.unityInstance = unityInstance;
window.waitForUnityStepFinish = waitForUnityStepFinish;
window.waitForUnityVehicleStepFinish = waitForUnityVehicleStepFinish;
@@ -1278,6 +1281,15 @@ const UnityComponent = function (props) {
}).catch((message) => {
console.error(`Unity 实例创建失败: ${message}`);
});
};
if (CONFIG.usecdn) {
prefetchLevelsDatabase(cdnRoot).then(boot).catch((err) => {
console.error('[unity-cdn] 关卡库预取失败', err);
boot();
});
} else {
boot();
}
};
document.body.appendChild(script);

View File

@@ -4,6 +4,7 @@ import VM from 'scratch-vm';
import Box from '../box/box.jsx';
import { STAGE_DISPLAY_SIZES } from '../../lib/layout-constants.js';
import CONFIG from '../../playground/config.js'; // 引入 config.js
import { getUnityCdnRoot, getUnityCdnBuildRoot, prefetchLevelsDatabase } from '../../lib/unity-cdn.js';
import RankBadgeGenerator from '../../playground/rank-badge-generator.js';
// import FriendToggle from '../friend-toggle/FriendToggle.js';
// import FriendListModal from '../friend-toggle/FriendListModal.js';
@@ -1482,10 +1483,11 @@ const UnityComponent = function (props) {
// if (canvas && !window.unityInstance) {
const unityUrl = "/unity";
const buildUrl = "/unity/Build";
const cdnurt = CONFIG.unitycdndir;
const cdnbuildurl = CONFIG.unitycdnbuilddir;
const noneurl = ''
const loaderUrl = buildUrl + "/mstest5.loader.js";
const cdnRoot = CONFIG.usecdn ? getUnityCdnRoot() : unityUrl;
const cdnBuildRoot = CONFIG.usecdn ? getUnityCdnBuildRoot() : buildUrl;
let loaderUrl = CONFIG.usecdn
? `${cdnBuildRoot}/mstest5.loader.js`
: `${buildUrl}/mstest5.loader.js`;
let config = {
dataUrl: buildUrl + "/mstest5.data.br",
frameworkUrl: buildUrl + "/mstest5.framework.js.br",
@@ -1497,10 +1499,10 @@ const UnityComponent = function (props) {
};
if (CONFIG.usecdn) {
config = {
dataUrl: cdnbuildurl + "/mstest5.data.br",
frameworkUrl: cdnbuildurl + "/mstest5.framework.js.br",
codeUrl: cdnbuildurl + "/mstest5.wasm.br",
streamingAssetsUrl: cdnurt + "/StreamingAssets",
dataUrl: cdnBuildRoot + "/mstest5.data.br",
frameworkUrl: cdnBuildRoot + "/mstest5.framework.js.br",
codeUrl: cdnBuildRoot + "/mstest5.wasm.br",
streamingAssetsUrl: cdnRoot + "/StreamingAssets",
// dataUrl: buildUrl + "/Build.data.br",
// frameworkUrl: buildUrl + "/Build.framework.js.br",
// codeUrl: buildUrl + "/Build.wasm.br",
@@ -1516,9 +1518,10 @@ const UnityComponent = function (props) {
script.onload = () => {
window.iscreate = 0;
createUnityInstance(canvas, config, (progress) => {
// console.log(`加载进度: ${progress * 100}%`);
}).then((unityInstance) => {
const boot = () => {
createUnityInstance(canvas, config, (progress) => {
// console.log(`加载进度: ${progress * 100}%`);
}).then((unityInstance) => {
window.unityInstance = unityInstance;
window.waitForUnityStepFinish = waitForUnityStepFinish;
window.waitForUnityVehicleStepFinish = waitForUnityVehicleStepFinish;
@@ -1542,6 +1545,15 @@ const UnityComponent = function (props) {
}).catch((message) => {
console.error(`Unity 实例创建失败: ${message}`);
});
};
if (CONFIG.usecdn) {
prefetchLevelsDatabase(cdnRoot).then(boot).catch((err) => {
console.error('[unity-cdn] 关卡库预取失败', err);
boot();
});
} else {
boot();
}
};
document.body.appendChild(script);

View File

@@ -0,0 +1,55 @@
import CONFIG from '../playground/config.js';
/**
* 纯 CDN 根路径。
* 方案 A默认始终返回 unityCdnRemote浏览器直连 OSS须配置 OSS CORS
* 方案 BunityCdnUseSiteProxy / unityCdnUseDevProxy 为 true 时走 /cdn-unity 同源代理。
*/
export function getUnityCdnRoot() {
if (!CONFIG.usecdn) {
return '/unity';
}
const useProxy = CONFIG.unityCdnUseSiteProxy || CONFIG.unityCdnUseDevProxy;
if (useProxy && CONFIG.unityCdnDevProxy) {
return CONFIG.unityCdnDevProxy;
}
return CONFIG.unityCdnRemote || CONFIG.unitycdndir;
}
export function getUnityCdnBuildRoot() {
return `${getUnityCdnRoot()}/Build`;
}
/** 预取关卡库并注入,避免 LevelDatabase 回退到 /unity/ 或 editor 相对路径 */
export async function prefetchLevelsDatabase(cdnRoot) {
const root = String(cdnRoot || getUnityCdnRoot()).replace(/\/$/, '');
const jsonUrl = `${root}/levels-database.json`;
window.__tfrhLevelsDatabaseUrl = jsonUrl;
if (window.__tfrhLevelsDatabaseJson) {
return;
}
const brUrl = jsonUrl.replace(/\.json(\?.*)?$/i, '.json.br$1');
if (typeof DecompressionStream !== 'undefined') {
try {
const brRes = await fetch(brUrl);
if (brRes.ok) {
const text = await new Response(await brRes.arrayBuffer())
.pipeThrough(new DecompressionStream('brotli'))
.text();
window.__tfrhLevelsDatabaseJson = JSON.parse(text);
return;
}
} catch (e) {
console.warn('[unity-cdn] levels-database.json.br 预取失败,尝试 .json', e);
}
}
const res = await fetch(jsonUrl);
if (!res.ok) {
throw new Error(`levels-database HTTP ${res.status}: ${jsonUrl}`);
}
window.__tfrhLevelsDatabaseJson = await res.json();
}

View File

@@ -166,8 +166,16 @@ const CONFIG = {
version: "20260520",
unitycdndir: 'https://oss.eanic.cn/001_code_unity_res_20260520',
unitycdnbuilddir: 'https://oss.eanic.cn/001_code_unity_res_20260520/Build',
/** OSS 真实地址(生产环境浏览器直连) */
unityCdnRemote: 'https://oss.eanic.cn/001_code_cocos_res_20260616',
/** 方案 Bnginx / webpack 同源代理前缀(方案 A 直连 OSS 请保持 false */
unityCdnDevProxy: '/cdn-unity',
/** 本地 npm start 也走代理(仅 unityCdnUseSiteProxy 或此项为 true 时生效) */
unityCdnUseDevProxy: false,
/** 生产 nginx 反向代理 OSS 同路径时设为 true方案 B */
unityCdnUseSiteProxy: false,
unitycdndir: 'https://oss.eanic.cn/001_code_cocos_res_20260616',
unitycdnbuilddir: 'https://oss.eanic.cn/001_code_cocos_res_20260616/Build',
python_pyodide_cdn_dir: 'https://oss.eanic.cn/001_code_python_res_20241213/pyodide/',
// 可以根据需要添加其他配置
@@ -175,7 +183,7 @@ const CONFIG = {
disabledev: false,
usecdn: false,
usecdn: true,
lvlock: false,
lvlock_normal_learn: !(typeof localStorage !== 'undefined' &&
(localStorage.getItem('player_id') === '37' || localStorage.getItem('player_id') === '45' || localStorage.getItem('player_id') === '55')),

File diff suppressed because it is too large Load Diff

View File

@@ -1,126 +0,0 @@
<linker>
<assembly fullname="Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="AudioManager" preserve="all" />
<type fullname="Platformer.Controller.PlayerController" preserve="all" />
<type fullname="Platformer.Controller.PropController" preserve="all" />
<type fullname="Platformer.Controller.VehicleController" preserve="all" />
<type fullname="Platformer.Controller.ViewController" preserve="all" />
<type fullname="Platformer.Core.Health" preserve="all" />
<type fullname="Platformer.Core.UI.ButtonHandler" preserve="all" />
<type fullname="Platformer.Gameplay.LineGridRenderer" preserve="all" />
<type fullname="Platformer.Manager.GameManager" preserve="all" />
<type fullname="PopupController" preserve="all" />
<type fullname="SkinDialog" preserve="all" />
<type fullname="SkinItem" preserve="all" />
<type fullname="UIMain" preserve="all" />
</assembly>
<assembly fullname="Unity.Addressables, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" preserve="all">
<type fullname="UnityEngine.AddressableAssets.Addressables" preserve="all" />
</assembly>
<assembly fullname="Unity.ResourceManager, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null" preserve="all">
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.AssetBundleProvider" preserve="all" />
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.BundledAssetProvider" preserve="all" />
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.InstanceProvider" preserve="all" />
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.LegacyResourcesProvider" preserve="all" />
<type fullname="UnityEngine.ResourceManagement.ResourceProviders.SceneProvider" preserve="all" />
</assembly>
<assembly fullname="Unity.TextMeshPro, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="TMPro.TextMeshPro" preserve="all" />
<type fullname="TMPro.TextMeshProUGUI" preserve="all" />
<type fullname="TMPro.TMP_FontAsset" preserve="all" />
<type fullname="TMPro.FaceInfo_Legacy" preserve="nothing" serialized="true" />
<type fullname="TMPro.FontAssetCreationSettings" preserve="nothing" serialized="true" />
<type fullname="TMPro.KerningTable" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_Character" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_FontFeatureTable" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_FontWeightPair" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_GlyphAdjustmentRecord" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_GlyphPairAdjustmentRecord" preserve="nothing" serialized="true" />
<type fullname="TMPro.TMP_GlyphValueRecord" preserve="nothing" serialized="true" />
<type fullname="TMPro.VertexGradient" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="UnityEditor.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEditor.Audio.AudioMixerSnapshotController" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.AnimationModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.AnimationClip" preserve="all" />
<type fullname="UnityEngine.Animator" preserve="all" />
<type fullname="UnityEngine.AnimatorOverrideController" preserve="all" />
<type fullname="UnityEngine.RuntimeAnimatorController" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.AudioModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Audio.AudioMixer" preserve="all" />
<type fullname="UnityEngine.Audio.AudioMixerGroup" preserve="all" />
<type fullname="UnityEngine.AudioClip" preserve="all" />
<type fullname="UnityEngine.AudioListener" preserve="all" />
<type fullname="UnityEngine.AudioSource" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.CoreModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Camera" preserve="all" />
<type fullname="UnityEngine.GameObject" preserve="all" />
<type fullname="UnityEngine.LightmapSettings" preserve="all" />
<type fullname="UnityEngine.LineRenderer" preserve="all" />
<type fullname="UnityEngine.Material" preserve="all" />
<type fullname="UnityEngine.MeshRenderer" preserve="all" />
<type fullname="UnityEngine.Object" preserve="all" />
<type fullname="UnityEngine.RectTransform" preserve="all" />
<type fullname="UnityEngine.Rendering.SortingGroup" preserve="all" />
<type fullname="UnityEngine.RenderSettings" preserve="all" />
<type fullname="UnityEngine.Shader" preserve="all" />
<type fullname="UnityEngine.Sprite" preserve="all" />
<type fullname="UnityEngine.SpriteRenderer" preserve="all" />
<type fullname="UnityEngine.Texture2D" preserve="all" />
<type fullname="UnityEngine.Transform" preserve="all" />
<type fullname="UnityEngine.U2D.SpriteAtlas" preserve="all" />
<type fullname="UnityEngine.Events.PersistentCallGroup" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.RectOffset" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="UnityEngine.GridModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Grid" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.Physics2DModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.BoxCollider2D" preserve="all" />
<type fullname="UnityEngine.Rigidbody2D" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.TextRenderingModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Font" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.TilemapModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Tilemaps.Tile" preserve="all" />
<type fullname="UnityEngine.Tilemaps.Tilemap" preserve="all" />
<type fullname="UnityEngine.Tilemaps.TilemapRenderer" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.UI, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.EventSystems.EventSystem" preserve="all" />
<type fullname="UnityEngine.EventSystems.StandaloneInputModule" preserve="all" />
<type fullname="UnityEngine.UI.Button" preserve="all" />
<type fullname="UnityEngine.UI.CanvasScaler" preserve="all" />
<type fullname="UnityEngine.UI.ContentSizeFitter" preserve="all" />
<type fullname="UnityEngine.UI.GraphicRaycaster" preserve="all" />
<type fullname="UnityEngine.UI.GridLayoutGroup" preserve="all" />
<type fullname="UnityEngine.UI.Image" preserve="all" />
<type fullname="UnityEngine.UI.Mask" preserve="all" />
<type fullname="UnityEngine.UI.Scrollbar" preserve="all" />
<type fullname="UnityEngine.UI.ScrollRect" preserve="all" />
<type fullname="UnityEngine.UI.VerticalLayoutGroup" preserve="all" />
<type fullname="UnityEngine.UI.AnimationTriggers" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.Button/ButtonClickedEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.ColorBlock" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.MaskableGraphic/CullStateChangedEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.Navigation" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.ScrollRect/ScrollRectEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.Scrollbar/ScrollEvent" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.UI.SpriteState" preserve="nothing" serialized="true" />
</assembly>
<assembly fullname="UnityEngine.UIModule, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null">
<type fullname="UnityEngine.Canvas" preserve="all" />
<type fullname="UnityEngine.CanvasGroup" preserve="all" />
<type fullname="UnityEngine.CanvasRenderer" preserve="all" />
</assembly>
<assembly fullname="UnityEngine.TextCoreFontEngineModule">
<type fullname="UnityEngine.TextCore.FaceInfo" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.TextCore.Glyph" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.TextCore.GlyphMetrics" preserve="nothing" serialized="true" />
<type fullname="UnityEngine.TextCore.GlyphRect" preserve="nothing" serialized="true" />
</assembly>
</linker>

Some files were not shown because too many files have changed in this diff Show More