unity could not produce class with id 210 --- TerrainInstance 其实是 UnityEngine.CoreModule.Sorting

2023-10-31

'Strip Engine Code' の幾重にも張り巡らせられる罠

https://qiita.com/warapuri/items/e2562e9535bfae5013d0

More than 1 year has passed since last update.

前置き

Unity には 'Strip Engine Code' という機能があって、必要のないEngine側のコードを削ってくれるという便利な機能がある。
ただ、AssetBundle を作るときには注意が必要だ。なぜかというと、AssetBundleはビルドした元のファイルはアプリ本編の方には入れないのが普通で、そうなるとStripされてしまうというわけだ。くわしくはテラシュールブログの「【Unity】Unity 5.3からAssetBundleはどう変わるのか…まとめ」を読んでもらうといいかもしれない。

これを回避するためには「link.xml」というファイルを作ってその中に

link.xml

<linker>
       <assembly fullname="UnityEngine">
               <type fullname="UnityEngine.GameObject" preserve="all"/>
               <type fullname="UnityEngine.Texture2D" preserve="all"/>
       </assembly>
</linker>

こんな感じに書かなくちゃいけない。で、↑の

link.xml

              <type fullname="UnityEngine.Texture2D" preserve="all"/>

という部分を必要なコンポーネントを追加しなくちゃいけないということになる。
で、その必要なコンポーネントっていうのがミソで、何が必要かというのが事前にわかるわけではない。イヤ、わからなくはないのだが、一個一個確かめなくてはいけなくて、そもそもAssetBundleを一個一個確認して行く、というのは非現実的だ。

そこで、とりあえず全部AssetBundle をロードしていって、落ちたところを見て、落ちたときのエラーメッセージを確認しつつ、どんなコンポーネントが含まれていなかったということを確認するという地道なことをしていくしかない。

落ちたとき

Could not produce class with ID XXX

というメッセージが出るので、そのIDが本来必要だったコンポーネントのIDというわけだ。

罠1

前置きが長くなった。
で、だ。

今回のエラーメッセージが

Could not produce class with ID 210

という「210」という番号。それを公式のマニュアル「YAML Class ID Reference」を調べると、

とババーンと書いてある。ほうほう、「TerrainInstance」が足りないんだな、と。

だがそれは罠だ。

いやいやいや、おかしいでしょ。
今時Terrainを使う方がありえないし、そもそもAssetBundleですよ?TerrainをAssetBundleに入れることなんてそうそうない。実際に使っていない。

罠2

さっぱりわからなかったが、ググってみたら同じような質問に回答している人がいて、そこに

The class-ID docs are misprinted.
The actual type is UnityEngine.CoreModule.SortingGroup, not TerrainInstance.
Took me a lot of brute-force testing to get to the solution :) I hope > this saves you some trouble.
Good luck!

ま、要は

それはミスプリントで、本当は「UnityEngine.CoreModule.SortingGroup」であって、「TerrainInstance」じゃないよ。
はっはっは、まいったよね。俺も大変だったよ。じゃあ頑張ってな!

と言ってる。

なるほど、そういうことか。それでは「UnityEngine.CoreModule.SortingGroup」を入れればいいということだな、と。

だがそれは罠だ(2回目)

実際に「UnityEngine.CoreModule.SortingGroup」を入れてもダメで、実際は

「UnityEngine.Rendering.SortingGroup」を入れなくてはいけない。(考えて見たらその通りで、なんで「CoreModule」でのnamespace にしてるんだろう?という。おそらく昔はそうだった的な?)

というわけで、

link.xml

<linker>
       <assembly fullname="UnityEngine">
              <type fullname="UnityEngine.Rendering.SortingGroup" preserve="all"/>
       </assembly>
</linker>

というのが本当に必要なことだったということ。
現場からは以上です。

 

======================

这是一个错误打印,事实上,它是UnityEngine.CoreModule.SortingGroup,而不是TerrainInstance。
    嗯,是的,是的,是的。 我也很难。 那就祝你好运!

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity could not produce class with id 210 --- TerrainInstance 其实是 UnityEngine.CoreModule.Sorting 的相关文章

  • EXCEL的快速分列

    1 打开Excel并选择分列 选择智能分列 点击 2 选择手动设置分列 3 注意符号一定是英文要和你分列的数据内符号一致 4 点击下一步完成 效果如下

随机推荐

  • 数据链路层三个基本问题(封装成帧 、透明传输和差错检测 )

    文章目录 使用点对点信道的数据链路层 1 1 数据链路和帧 1 2 三个基本问题 1 封装成帧 2 透明传输 3 差错检测 循环冗余检验CRC 帧检验序列 FCS 接收端对收到的每一帧进行 CRC 检验 数据链路层使用的信道主要有以下两种类
  • linux suse设置中文系统

    Linux字符编码默认为UTF 8 如出现乱码可设置为GBK 1 手动更改profile文件的命令 vi etc profile 2 在文件的末尾添加以下两行命令 export LC ALL zh CN GBK export LANG zh
  • Happiness【2019EC Final G题】【模拟】

    题目链接 题意很长 先翻译一下 由N个参赛队伍 给出其余N 1只参赛队伍 另外一支队伍是我们 本次ICPC一共有10道题 我们知道其余N支队伍每道题的通过时间和错误次数 如果是 则为没有在300分钟内解决该问题 最后给出我们队伍 做出每道题
  • 窨井液位计(下水道液位计)的分类

    窨井液位计又称下水道液位计 是应用在市政管网监测集水井 雨水井 污水井 观察井等测量水位变化的仪表 根据原理不同可分为 压力式 雷达式和超声波式3种 通过传感器测量液位数值 利用无线远传的方式上传到数据平台 实现对井下水位实时监测的目的 压
  • yapi的安装

    Yapi的安装 Yapi是一款不错的接口管理软件 我主要用它来进行接口Mock Yapi安装所需环境 Node js 7 6 Mongodb 2 6 git 各环境安装地址 git https git scm com downloads N
  • F.softmax()的用法

    F softmax 的用法 gt gt gt import torch gt gt gt import torch nn functional as F gt gt gt logits torch rand 2 2 gt gt gt pre
  • C++函数返回引用

    注 C 有三种传递方式 值传递 指针传递 引用传递 返回 值 和返回 引用 是不同的 函数返回值时会产生一个临时变量作为函数返回值的副本 而返回引用时不会产生值的副本 既然是引用 那引用谁呢 这个问题必须清楚 否则将无法理解返回引用到底是个
  • Spring Cloud Nacos源码讲解(五)- Nacos服务端健康检查

    Nacos服务端健康检查 长连接 概念 长连接 指在一个连接上可以连续发送多个数据包 在连接保持期间 如果没有数据包发送 需要双方发链路检测包 注册中心客户端2 0之后使用gRPC代替http 会与服务端建立长连接 但仍然保留了对旧http
  • The Black Tux

    The Black Tux IT桔子 The Black Tux IT桔子 The Black Tux theblacktux com posted on 2014 07 27 17 34 lexus 阅读 评论 编辑 收藏 转载于 htt
  • 从coco数据集中提取需要的类别

    进行目标检测时 有时只需要训练数据集中的部分图像 以 coco128 为例 只选出其中的车辆类 bicycle car motorcycle bus truck coco128 数据集中的标签为 txt 文件 每一个图像由若干行 每一行对应
  • 转载之remosaic

    一 Quadra CFA 介绍 Quadra CFA Quadra Color Filter array 功能提高了在弱光条件下的性能和信噪比 此功能在弱光条件下提供明亮和清晰的图像 在正常光照条件下提供高分辨率图像 Quadra CFA有
  • HTTPWeb服务器---HTTP整体设计框架

    整个项目采用B S模式 浏览器 服务器模式 通过浏览器发送的method 只要包含GET和POST两种方法 server对此进行响应 最终通过html显示所得到的结果 因为服务器同时处理多条连接 因此采用了多线程的结构 HTTP是在TCP之
  • Dijkstra算法和Floyd算法对比分析

    转载 http blog csdn net liuyanling cs article details 56330652 首先 Dijkstra算法与Floyd算法都是广度优先搜索的算法 都可以用来求单源点到其他所有点的最短路径 那么这两者
  • Go mod 全部操作命令

    一 基础理论 shell 1 Go mod 初始化 go mod init 模块名 2 Go mod 下载到本地Cache go mod download 2 Go mod 清理本地Cache go clean modcache 3 Go
  • IDEA查看调用方法代码上一步和下一步

    IDEA默认上一步是CTRL ALT 箭头 IDEA默认下一步是CTRL ALT 箭头
  • 2020暨南大学计算机专硕考研经验分享

    具体的研究生招生录取情况 初试复试比例 和初复试的流程可以看下面链接这篇 总结得很好 2020暨南大学计算机考研经验分享 精品 含录取名单 学习等资料获取 前期都是各位学长的帮助 真的非常感谢 尤其了知乎上分享经验的18级李学长 集中资料
  • stata怎么判断是否存在异常值_异常值的识别与处理,看这一篇就够了

    原标题 异常值的识别与处理 看这一篇就够了 在数据分析工作中 面对收集而来的数据 数据清洗是首要环节 而异常值处理是其中的一个重要部分 下面就给大家介绍一下如何处理数据中的异常值 一 异常值判断 何为异常值 异常值 指的是样本中的一些数值明
  • 关于CLion有时找不到标准库的解决方案

    关于CLion有时找不到标准库的解决方案 CLion是linux下C 开发的利器 出色的语法高亮 支持cmake工程让同类IDE望尘莫及 但是我在实际开发中遇到了标准库 STL 相关的语法高亮不能正常运行的问题 问题情境 我们用UBUNTU
  • PyQt QTextEdit 详细用法示例 Python

    PyQt QTextEdit 详细用法示例 Python QTextEdit 是 PyQt 中用于显示和编辑文本的小部件之一 它提供了丰富的功能 包括文本格式化 文本样式 撤销和重做操作等 在本文中 我们将探讨 QTextEdit 的详细用
  • unity could not produce class with id 210 --- TerrainInstance 其实是 UnityEngine.CoreModule.Sorting

    Strip Engine Code 幾重 張 巡 罠 https qiita com warapuri items e2562e9535bfae5013d0 More than 1 year has passed since last up