# Unity Project Data Extractor This directory contains a suite of Python scripts designed to extract and process data from a Unity project in various levels of detail. ## Core Scripts There are three main executable scripts: 1. `extract_high_level.py`: Generates a top-down summary of the project, including project settings, package manifests, and GUID-to-asset path mappings. 2. `extract_mid_level.py`: Creates a virtual representation of the project's `Assets` directory. It converts scenes and prefabs into JSON files representing the GameObject hierarchy and copies all C# scripts. 3. `extract_low_level.py`: Performs a deep-dive extraction, creating a detailed JSON file for *every single GameObject* in each scene and prefab. ## How to Run All scripts are designed to be run from the root directory of the Unity project. They require a Python virtual environment with `ruamel.yaml` installed. ### Prerequisites Activate the virtual environment: ```bash source venv/bin/activate ``` ### Execution Each script accepts two command-line arguments: * `--input`: The root directory of the Unity project (e.g., `.`). * `--output`: The directory where the generated output folder will be saved. **Example:** To run the high-level extractor and save the output to a folder named `MyOutput`: ```bash python3 Assets/LLM/source/extract_high_level.py --input . --output ./MyOutput ``` To run the mid-level extractor: ```bash python3 Assets/LLM/source/extract_mid_level.py --input . --output ./MyOutput ``` To run the low-level extractor: ```bash python3 Assets/LLM/source/extract_low_level.py --input . --output ./MyOutput ``` ## Utility Modules The core logic is contained in the `utils/` subdirectory: - `yaml_utils.py`: Handles the complexities of parsing Unity's custom YAML format. - `file_utils.py`: Provides helper functions for file system operations like finding files. - `virtual_tree_builder.py`: Builds the nested GameObject hierarchy for the mid-level extractor. - `deep_parser.py`: Contains the logic for the deep, flat-list parsing used by the low-level extractor. - `json_reducer.py`: An unused utility for reducing the size of JSON objects.