Hi, I found a regression when loading some bundles built with Unity 2022.3.62f2.
Environment
- OS: Windows 11 x64
- Python: 3.12.x
- UnityPy: 1.25.0 (fails), 1.23.0 (works)
- Sample game data source: Stella Sora (Yostar), bundle extension .unity3d
Minimal repro
import UnityPy
env = UnityPy.load("char_11203.unity3d")
for obj in env.objects:
print(obj.peek_name())
Run Command
PS I:\_CodingWorkspace\test> uv run "i:\_CodingWorkspace\test\test.py"
Error parsing file 'CAB-fc17455868f74b0aa8a95d5b4a3a4a13' as 0: Invalid version string: 2022.3.62f2
2
Error parsing file 'char_11203.unity3d' as 1: Invalid version string: 2022.3.62f2
2
Traceback (most recent call last):
File "i:\_CodingWorkspace\test\test.py", line 2, in <module>
env = UnityPy.load("char_11203.unity3d")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\environment.py", line 63, in __init__
self.load_file(arg)
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\environment.py", line 152, in load_file
f = parse_file(reader, self, name=stream_name, typ=typ, is_dependency=is_dependency)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\ImportHelper.py", line 155, in parse_file
raise e
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\ImportHelper.py", line 149, in parse_file
f = files.BundleFile(reader, parent, name=name, is_dependency=is_dependency)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\files\BundleFile.py", line 53, in __init__
self.read_files(blocksReader, m_DirectoryInfo)
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\files\File.py", line 82, in read_files
f = ImportHelper.parse_file(node_reader, self, name, is_dependency=self.is_dependency)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\ImportHelper.py", line 155, in parse_file
raise e
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\ImportHelper.py", line 147, in parse_file
f = files.SerializedFile(reader, parent, name=name, is_dependency=is_dependency)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\files\SerializedFile.py", line 273, in __init__
self.set_version(unity_version)
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\files\SerializedFile.py", line 360, in set_version
self.version = UnityVersion.from_str(string_version)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "I:\_CodingWorkspace\test\.venv\Lib\site-packages\UnityPy\helpers\UnityVersion.py", line 61, in from_str
raise ValueError(f"Invalid version string: {version}")
ValueError: Invalid version string: 2022.3.62f2
2
Actual result on 1.25.0
- It fails with:
- Error parsing file 'CAB-...' as 0: Invalid version string: 2022.3.62f2
- Error parsing file '...char_11203.unity3d' as 1: Invalid version string: 2022.3.62f2
- ValueError: Invalid version string: 2022.3.62f2 (sometimes appears as 2022.3.62f2 followed by an extra trailing line/character in output)
Expected result
- Bundle should load successfully (same file works on 1.23.0).
Additional info
- Downgrading UnityPy to 1.23.0 makes the same script and same file run normally.
- This looks like a parsing regression in newer versions for certain serialized data/version string handling.
Hi, I found a regression when loading some bundles built with Unity 2022.3.62f2.
Environment
Minimal repro
Run Command
Actual result on 1.25.0
Expected result
Additional info