public GameObject Instantiate(AssetRef assetRef) { assetRef.Refrence(); var clone = UnityEngine.Object.Instantiate(assetRef.Get <GameObject>()); clone.OnDestroyAsObservable().Subscribe(_ => assetRef.Release()); return(clone); }
protected void CacheAssetRef(AssetRef assetRef) { var hashCode = assetRef.Get().GetHashCode(); if (pathMap.ContainsKey(assetRef.path)) { Log.Resource.E("{0} has already cached in pathMap", assetRef.path); return; } pathMap.Add(assetRef.path, hashCode); if (assetMap.ContainsKey(hashCode)) { Log.Resource.E("{0} has already cached in assetMap", assetRef.path); return; } Log.Resource.I("CacheAssetRef {0}", assetRef.path); assetMap.Add(hashCode, assetRef); }