public void Add(SBuildObjectInfo info) { if (info.mResPath.Length == 0) { Log.Error("MultyBuildManager::Add param error"); return; } m_ListBuildObject.Add(info); if (info.mFrameOffset == 0 || (m_ListBuildObject.Count == 1 && m_CurFrame >= info.mFrameOffset)) { BuildOne(); m_CurFrame = 0; } }
private void BuildOne() { SBuildObjectInfo info = m_ListBuildObject[0]; ProcessBuild(info); m_ListBuildObject.Remove(info); //修改加载间隔 if (m_ListBuildObject.Count > 0 && m_ListBuildObject[0].mFrameOffset > 0) { m_CurOffsetFrame = m_ListBuildObject[0].mFrameOffset; } else { m_CurOffsetFrame = m_MaxOffsetFrame; } }
private void ProcessBuild(SBuildObjectInfo info) { Object res = null; switch (info.Type) { case eResourceType.UNDEFIED: case eResourceType.PREFAB: res = ResourceLoaderManager.Instance.Load(info.mResPath); break; case eResourceType.SPRITE: res = ResourceLoaderManager.Instance.LoadSprite(info.mResPath); break; case eResourceType.TEXTURE: res = ResourceLoaderManager.Instance.LoadTexture(info.mResPath); break; case eResourceType.MATERIAL: res = ResourceLoaderManager.Instance.LoadMaterial(info.mResPath); break; case eResourceType.SHADER: res = ResourceLoaderManager.Instance.LoadShader(info.mResPath); break; case eResourceType.SOUND: res = ResourceLoaderManager.Instance.LoadSound(info.mResPath); break; } if (res == null) { Log.Error("MultyBuildManager::ProcessBuild - not build file:" + info.mResPath); return; } Object obj = GameObject.Instantiate(res, Vector3.zero, Quaternion.identity); if (info.OnComplate != null) { info.OnComplate(obj); } }