unity_rs 0.1.0

unity assetbundle unpack
Documentation
use crate::classes::FromObject;
use crate::env::Object;
use crate::error::UnityResult;

pub struct TextAsset {
    pub name: String,
    pub script: Vec<u8>,
    pub path_id: i64,
}

impl<'a> FromObject<'a> for TextAsset {
    fn load(object: &Object) -> UnityResult<Self> {
        let mut r = object.info.get_reader();
        let name = r.read_aligned_string()?;
        let length = r.read_i32()?;
        let script = r.read_u8_list(length as usize)?;
        Ok(Self {
            name,
            script,
            path_id: object.info.path_id,
        })
    }
}

impl TextAsset {
    pub fn script_string(&self) -> UnityResult<&str> {
        Ok(std::str::from_utf8(&self.script)?)
    }
}