
World Partition 就是 UE5 之后提供的"把一个大 Level 按空间网格自动管理、自动流送"的系统,目标就是减少以前手动拆 Sublevel / Streaming Level 的工作量。
World Partition 能自动分块"空间中的 Actor",但不能自动帮你重构游戏逻辑。
你把大量 Actor 都放在一个 Level 里,后期可以把这个 Level 转成 World Partition,让 UE 根据空间网格把 Actor 存储、加载、卸载。官方文档明确说 World Partition 是自动数据管理和基于距离的 Level Streaming 系统,并且现有 Level 可以通过 Tools > Convert Level 转换为 World Partition。Epic Games Developers
但是,如果你的逻辑全部写在 Level Blueprint 里,就要分情况看。
第一类:纯场景触发逻辑,比如玩家进入某个区域,开门、播音效、显示提示、切换灯光。这类逻辑放在一个 Level 里不是致命问题,后期可以慢慢拆成 Actor Blueprint、Component、Subsystem、Data Layer 控制器。
第二类:大量引用具体 Actor 的逻辑,比如 Level Blueprint 里直接拖了几十个门、机关、NPC、触发器引用,然后统一控制。这在 World Partition 下会变得不舒服,因为被引用的 Actor 可能属于不同 Cell,有些运行时并不一定加载。你不是"不能做",而是依赖关系会变脆。
第三类:全局系统逻辑,比如任务系统、存档系统、UI 状态、玩家状态、AI 管理、刷怪管理。这类本来就不适合长期放在 Level Blueprint。更合适的是 GameMode、GameState、PlayerController、GameInstance、WorldSubsystem、Actor Component、专门的 Manager Actor,或者数据驱动表。
Level Blueprint 里直接拖了几十个门、机关、NPC、触发器引用,然后统一控制。
:全局系统逻辑,比如任务系统、存档系统、UI 状态、玩家状态、AI 管理、刷怪管理。这类本来就不适合长期放在 Level Blueprint。更合适的是 GameMode、GameState、PlayerController、GameInstance、WorldSubsystem、Actor Component、专门的 Manager Actor,或者数据驱动表。
World Partition 能救"场景规模和内存加载问题",但不能直接救"逻辑结构混乱问题"。
如果是开放世界、大场景、玩家在一个连续空间里移动,World Partition 很适合。如果只是几个房间、关卡切换、封闭副本,传统 Level Streaming 或者手动加载地图反而更清晰。
Epic 的设计语境里,World Partition 更偏向 large world / open world 的自动空间管理,而不是所有项目都必须用。

不是所有项目都必须用。


一个 Actor 会根据自己的 Bounds、Runtime Grid、Data Layer、Is Spatially Loaded 等属性,被归入某些运行时 Cell。玩家、摄像机或指定 Streaming Source 接近某片区域时,这些 Cell 被加载;远离时卸载。Is Spatially Loaded 关闭的 Actor 通常不是按距离 Cell 走,而更偏常驻/由其他机制管理。官方 World Partition 页面也提到每个 Actor 可以启用或关闭空间加载,并由 Streaming Source 控制加载。
World Partition 切的是"加载单位",不是切断"对象身份"。
所以它能做到"不影响大量引用"的前提是:UE 的对象系统本来就是基于 Package/Object 引用和反射序列化的。World Partition 只是把原本存在同一个 Level Package 里的 Actor 外置成 External Actor Package,再用 World Partition 索引管理它们。
局部逻辑跟着局部 Actor 走,比如门的逻辑在 Door Blueprint,触发器的逻辑在 Trigger Actor,区域事件在 Area Controller Actor。
远距离 Actor 互相硬引用。
比如 A 区域的开关直接引用 B 区域的门。如果 B 区域没加载,运行时就要考虑加载状态。更稳的是用事件、接口、ID、Subsystem、Gameplay Tag 或软引用。
全局状态存在普通场景 Actor 上。
比如任务进度、背包、关卡状态存在某个地图里的 Manager Actor,而它又被设成 Spatially Loaded。这种就危险。全局状态应该在 GameInstance、GameState、SaveGame、Subsystem、Data Asset 等位置。
,大 Actor 横跨很多 Cell。
例如一个超长桥、巨大建筑、超大 Landscape 相关对象。它的 Bounds 很大,可能导致它被归入较大加载范围,或者不按你想象的小格子卸载。World Partition 的 Cell 是空间管理,不是万能的几何切割器。
保住的是"引用身份"
米哈游內建的 AI Agent 平台:Echo。如果該平台還能串多種模型,那簡直就是一個小型的阿里百煉。
開發人員可以在 Echo 上自己建立一個「玩法測試」的 AI Agent,然後讓它 24/7 地跑測試。

Chrome :铬、铬合金、镀铬效果。
在这里是材质函数或材质资源名的一部分,ML_Metal_Chrome 大致表示"金属层 / 金属材质层:镀铬"。
Grime Color :污垢颜色、积垢颜色。
Grime 指灰尘、油污、污渍、脏污层;Color 是颜色。这个分组通常用来控制材质表面的脏污颜色。
Substrate :基底、底材、材质基底。
在 UE 的材质系统里,Substrate 是新的材质着色/分层体系,用来描述材质的物理层结构,比如金属、涂层、透明层、污垢层等如何组合。它不是普通"底板"的意思,而更接近"承载材质表现的基础材质层系统"。
Google 当年做 Chrome 浏览器时,一个核心设计目标是减少这些浏览器外壳,让用户把注意力放在网页内容上,也就是"content, not chrome"。所以把浏览器命名为 Chrome 带有一点反讽意味:名字叫"界面外壳",但设计目标恰恰是尽量减少界面外壳。早期项目名也叫 Chrome,后来就沿用了正式名称。另一个说法是这个代号也让人联想到速度、跑车、金属质感,所以适合一个强调快速的浏览器。Wikipedia+1
所以:
Google Chrome 可以理解成:
"Google 的浏览器外壳/浏览器界面",但实际品牌含义更偏向"快速、简洁、少界面干扰的浏览器"。
sub- :在......下面、下层
stratum / strate:层、地层、层状结构
但在现代英语里,substrate 是一个完整单词,不是界面里把 sub 和 strate 两个词拼在一起让你分别理解。它常见含义包括:
基底 、底材 、衬底 、基质 、承载层。


一张基础法线 BaseNormal 和另一张附加法线 AdditionalNormal 正确合成,
BaseNormal 负责大的凹凸、接缝、板件起伏;AdditionalNormal 可以接一张 tiled normal,用来叠加细小划痕、喷砂纹、橘皮漆面、金属微凹凸。
直接 Add 或 Lerp 两张 normal,很容易导致蓝通道失真、高光塌掉、表面变灰或凹凸方向不对。你这段节点把 BaseNormal 和 AdditionalNormal 拆成 RG 与 B 分量,再通过 DotProduct、Multiply、Subtract、Normalize 重新构造最终法线,所以更适合做"基础法线 + 细节法线"的叠加。
UE Editor 对 Material Graph 节点的 文本序列化格式 。当你在 Material Editor 里复制一组节点时,UE 会把这些节点对象、子对象、属性、Pin、连接关系、节点坐标、注释框等导出成这种 Begin Object ... End Object 文本。
粘贴回 Material Editor 时,UE 不是"识别图片",也不是 AI 重建,而是反向解析这些文本:
Begin Object Class=/Script/UnrealEd.MaterialGraphNode
表示创建一个材质图节点 UI 对象。

overflow-visible!
MaterialExpression="/Script/Engine.MaterialExpressionLinearInterpolate..."
意思是:这个 UI 节点显示的是一个 Lerp 材质表达式。
NodePosX / NodePosY
决定画布上的位置。
所以 UE 粘贴后节点不会乱排,因为文本里已经保存了坐标。
CustomProperties Pin
决定节点的插槽。
比如:
overflow-visible!
PinName="A"
PinName="B"
PinName="Alpha"
PinName="Output"
这就是 Lerp 节点在 UI 上看到的 A、B、Alpha、Output。
LinkedTo=
决定连线。
例如:
overflow-visible!
LinkedTo=(MaterialGraphNode_11 95F6D50C...)
意思是当前 Pin 连接到了 MaterialGraphNode_11 的某个 Pin。UE 粘贴时根据这些 Node 名称和 PinId 重新建立连线。
Content Browser > Add / Create > Materials > Material Function
右键搜索 Make Material Attributes,放一个节点。
右键搜索 Function Output,放一个输出节点。
把 Make Material Attributes 的输出接到 Function Output 的 Input。
右键搜索 Function Input,放 4 个。
分别命名:
Tint
Tiling
Scratches
Grime
UV 区域:
放 Texture Coordinate。
放 Multiply。
把 Texture Coordinate 接到 Multiply A。
把 Tiling 接到 Multiply B。
Multiply 输出就是所有贴图共享的 UV。
《异环》(Neverness to Everness)是完美世界游戏 旗下的Hotta Studio(幻塔工作室) 自主研发的超自然都市开放世界RPG
完美世界(Perfect World)与网易(NetEase)是两家完全独立 且处于竞争关系的互联网游戏公司。
- 完美世界是一家在 A 股上市的独立公司(证券代码:002624),其控股股东为完美世界控股集团有限公司 ,实际控制人为创始人池宇峰,而非网易。
- 竞争对手:在行业地位上,完美世界曾长期与腾讯、网易并称为中国网游的"三巨头"。目前,它们在二次元开放世界(如《异环》对标网易的《代号:无限大》)等多个赛道上直接竞争。
研发团队 :由 Hotta Studio(幻塔工作室) 自主研发,该工作室是完美世界游戏旗下的全资子公司/独立工作室。
- 国内版 :由完美世界游戏 直接发行。
- 国际版 :最初由腾讯旗下的 Level Infinite 代理发行,但根据最新公告,完美世界已于 2025 年初 全面接回了《幻塔》在全球范围内的运营与发行权。
- 台港澳地区:由艾玩天地代理,而艾玩天地也是完美世界在海外市场长期合作的紧密伙伴。

对《异环》这类游戏,通常不是简单的"同一个游戏换个入口",而是开发商/母公司把不同地区的发行、客服、活动、支付、合规、宣发交给不同主体运营。公开资料显示,《异环 / Neverness to Everness》由 Hotta Studio 开发,Hotta Studio 属于 Perfect World Games;国际官网由 Perfect World Games 体系运营,而台港澳官网则是艾玩天地站点。维基资料也列出发行/运营区域为:中国大陆完美世界、台港澳艾玩天地、全球 Perfect World Games。这个大框架和截图里"台港澳由艾玩天地代理,不是 Hotta Studio 直营"的判断基本一致
"代理商"不是只帮忙卖游戏。地区代理通常拿到的是某个区域的运营授权,可能包括账号体系、支付渠道、客服、公告、活动、社区、线下展会、KOL 投放、合规审查、版本上线协调、奖品发放、数据处理等。开发商仍然负责游戏本体、版本内容、核心技术和大方向;代理商负责把这套产品在本地合法、可运营、可收款、可客服、可宣传地跑起来。所以"艾玩天地代理台港澳"意味着台港澳玩家很可能进入一个由艾玩天地承担本地运营责任的商业闭环,而不是直接进入 Perfect World 国际服闭环。
台港澳服可能使用艾玩天地账号、台港澳活动账号或对应地区商店账号;国际服可能使用 Perfect World、Google、Apple、PSN、Steam 或其他国际发行体系。账号体系不同,通常意味着预注册奖励、抽奖资格、客服工单、充值记录、封禁申诉都不一定互通。
比如台港澳交给艾玩天地,生产者关心的不是"玩家延迟低不低",而是:
这个地区谁负责获客?谁投放广告?谁找 KOL?谁谈平台资源?谁处理客服?谁承担本地合规?谁负责线下活动?谁处理玩家争议?谁承担营收目标?谁对当地媒体和社区负责?谁用当地语言写公告和活动文案?谁负责把本地支付渠道接起来?



专业发行合同里会设计约束:
营收分成比例;
最低投放义务;
品牌使用规范;
活动审批权;
奖励发放权限;
版本同步要求;
客服响应时间;
数据报表义务;
危机处理机制;
玩家数据归属;
合约终止后的账号迁移;
地区独占范围;
不得擅自修改概率、价格、奖励结构;
重大运营活动必须提前审批。
进程出口选择可用 PROCESS-PATH、PROCESS-PATH-REGEX、PROCESS-NAME、PROCESS-NAME-REGEX。



metadata 区域最规范的用途是配置用户脚本管理器需要提前知道的声明信息,不是配置普通业务变量。它更像"脚本清单 / manifest",用来告诉 Tampermonkey / Violentmonkey:
metadata 不是安全的私密配置区 。如果你的 GreasyFork 脚本公开发布,metadata 和正文代码都会被别人看到。所以 API Key 不应该直接写死在脚本里。比较合理的做法是让用户第一次运行时自己填写,然后用 GM_setValue / GM_getValue 存到本地脚本存储里。
metadata 区域不会像普通 JS 代码那样参与你的业务逻辑执行,但它会强烈影响脚本能不能运行、什么时候运行、在哪些页面运行、能调用哪些 API、能否跨域请求、能加载哪些外部库。
你说的是这种"自定义变量":
JavaScript
const API_PROVIDER = "openrouter";
const OPENROUTER_MODEL = "deepseek/deepseek-chat";
const DEEPSEEK_MODEL = "deepseek-chat";
const TEMPERATURE = 0.3;
那它们通常不应该放在 metadata 区域。更规范的方式是放在脚本正文开头的配置对象里:
JavaScript
const CONFIG = {
provider: "openrouter", // "openrouter" 或 "deepseek"
openrouter: {
baseURL: "https://openrouter.ai/api/v1/chat/completions",
model: "deepseek/deepseek-chat",
},
deepseek: {
baseURL: "https://api.deepseek.com/chat/completions",
model: "deepseek-chat",
},
generation: {
temperature: 0.3,
max_tokens: 800,
},
};

600 token 可能有 400 多个英文单词上下。
"没有回填分支"的意思是:脚本能识别这个题型编号,但在 fillQuestion() 里没有写对应的填答案动作。
现在逻辑大概是这样:
if (question.type === "0" || question.type === "1") {
// 单选、多选:点击选项
} else if (question.type === "2") {
// 填空题:逐个 textarea 填答案
} else if (question.type === "3") {
// 判断题:点击对/错
} else if (question.type === "4" || question.type === "6") {
// 简答题、论述题:填第一个 textarea
} else {
// 其他题型:什么也不做
}
- 5 名词解释:能被识别成 type = "5",也能请求 AI 得到答案,但不会自动填进页面。
- 7 计算题:同上,能识别、能拿答案,但不会自动回填。
- 原因是代码只处理了 0/1/2/3/4/6,没有把 5/7 放进文本框填写逻辑里。
在 Windows 11 上,Chrome / Google 浏览器插件目录通常在这里:
C:\Users\你的用户名\AppData\Local\Google\Chrome\User Data\Default\Extensions
也可以直接在资源管理器地址栏输入:
%LOCALAPPDATA%\Google\Chrome\User Data\Default\Extensions
如果你用了多个 Chrome 用户配置,不一定是 Default,可能是:
%LOCALAPPDATA%\Google\Chrome\User Data\Profile 1\Extensions
%LOCALAPPDATA%\Google\Chrome\User Data\Profile 2\Extensions
每个插件目录通常长这样:
Extensions
└── abcdefghijklmnopqrstuvwxyz...
└── 1.2.3_0
├── manifest.json
├── background.js
├── content.js
└── ...
那个很长的字符串就是插件 ID。你可以在 Chrome 地址栏打开:
chrome://extensions/
打开右上角 Developer mode ,每个扩展下面会显示 ID ,然后去 Extensions 文件夹里找对应 ID。
如果你说的是 Edge 插件,目录是:
%LOCALAPPDATA%\Microsoft\Edge\User Data\Default\Extensions
如果你说的是 油猴脚本 Tampermonkey 里的脚本 ,它们通常不以普通 .js 文件形式直接放在这个 Extensions 目录里,而是被 Tampermonkey 自己存储在浏览器扩展的数据目录或 IndexedDB/Local Extension Settings 里。对油猴脚本,最稳的方法是在 Tampermonkey 管理面板里导出或编辑。
Chrome/Chromium 扩展的解包目录 ,而不是 GreasyFork 那种单文件 userscript 目录。关键判断点是 manifest.json、popup.html、persist.html、sandbox.html、_locales、_metadata 这些结构。
最重要的是先看 manifest.json。它通常能告诉你:
插件名称、版本、描述、图标、权限、后台脚本、content scripts、popup 页面、options 页面、web_accessible_resources、host_permissions、manifest_version 等。
如果你要判断"这个插件会注入哪些网站""有没有远程请求""有没有收费/API逻辑""入口脚本在哪",第一优先级就是打开 manifest.json。
目录里几个文件/文件夹大概含义如下。
_locales:多语言文本目录。里面通常有 en/messages.json、zh_CN/messages.json 之类,用来存放插件名称、描述、按钮文案等本地化字符串。它一般不放核心逻辑,但可以帮助判断插件面向哪些语言区。
_metadata:通常是浏览器或 Chrome Web Store 安装/打包后生成的元数据目录,不一定是开发者源码的一部分。里面可能有校验、安装来源、签名相关信息。修改插件功能时一般不用优先看它。
libs:第三方库或插件自己的公共 JS 库目录。收费逻辑、API 请求封装、加密/混淆逻辑、UI 框架依赖有可能在这里。比如可能有 axios、jquery、某些 SDK、crypto-js、压缩后的 .js 文件。
logo、logo.svg、github.svg、google.svg、reddit.svg、twitter.svg:图标和资源文件。google/github/reddit/twitter.svg 这类图标暗示这个插件可能有第三方登录、分享、导入导出、OAuth 或外链入口,但只凭图标不能下结论,要看 HTML/JS 里是否引用。
embed.html:通常可能是被嵌入网页里的页面,或者作为 iframe 使用的 UI 页面。它可能承担页面内浮窗、授权页、嵌入式控制面板等功能。
popup.html:这是很典型的浏览器插件弹窗入口。点击浏览器右上角插件图标后显示的界面,通常从这里引用 popup.js 或打包后的 JS。要找插件 UI 按钮、登录状态、付费状态展示,优先看它引用了哪些脚本。
persist.html:这个名字像是持久化后台页面,尤其常见于 Manifest V2 或某些构建工具生成的结构。可能用于长期保存状态、维护后台逻辑、监听消息、存储 token。要判断是否有"登录保持""会员状态缓存""后台请求",这个值得看。
sandbox.html:可能用于隔离执行不可信代码、渲染外部内容、处理模板、iframe 沙箱。Chrome 扩展里 sandbox 页面不能直接访问扩展 API,通常用于安全隔离。它是否重要,要看 manifest 里有没有 "sandbox" 配置。
Game Studio
从名字看是面向浏览器游戏的设计、原型、发布流程。它不是 Unity/UE 插件,不等于能直接控制 Unity Editor 或 UE Editor。
- By default, Billboard sprites are intended for editor feedback and are typically set to be Hidden in Game. This ensures they do not interfere with the final visual experience while providing a clear "handle" for the developer.
- Sprite Customization : You can change the image displayed by Billboard1 in the Details panel under the Sprite category. This is helpful for organizing different types of utility actors with unique icons (e.g., using a lightbulb icon for light-related logic).
- Hierarchy Management : As a clickable element in the Components tree, you can right-click it to access context actions like Rename , Delete , or Add Component to create child objects.

This is essential for placing effects, such as light flares or icons, onto moving parts of a character ++without++ needing to update their position via the++Tick++ event.

买伯克希尔股票的人,不是把钱交给巴菲特管理,然后巴菲特每年抽 1% 管理费;而是买入一家公司的股份。这家公司拥有保险、铁路、能源、制造、零售、现金、股票投资组合等资产。股东收益来自公司价值增长,而不是来自某个"委托理财合同"。
基金模式是:
"你给我 100 万,我收你每年 1 万管理费,亏赚都按合同来。"
伯克希尔模式是:
"你买这家公司的一部分。公司赚的钱属于全体股东,但管理层不承诺给你固定回报,也不按你的投入单独收费。"
股东想退出,是在股票市场把 BRK.A 或 BRK.B 卖给别人,公司本身不用把苹果股票、铁路、能源公司卖掉来还你钱。这就是所谓"永久资本"的优势。
买伯克希尔·哈撒韦股票,成为伯克希尔的小股东。


如果不小心迷失了,可以按 A 键,或者双击任意一个节点以聚焦该节点,然后向后滚动滚轮缩小查看全局。
