//----- property ----- //----- method ----- private void ApplyDummyAsset() { if (Application.isPlaying) { return; } if (Image.sprite != null && Image.sprite.name != DummyAssetName) { return; } if (string.IsNullOrEmpty(assetGuid)) { return; } if (string.IsNullOrEmpty(spriteId)) { return; } var assetPath = AssetDatabase.GUIDToAssetPath(assetGuid); if (string.IsNullOrEmpty(assetPath)) { return; } if (spriteAssetCache == null) { spriteAssetCache = new FixedQueue <AssetCacheInfo>(250); } Sprite spriteAsset = null; var cacheAssetInfo = spriteAssetCache.FirstOrDefault(x => x.assetGuid == assetGuid && x.spriteId == spriteId); if (cacheAssetInfo == null) { spriteAsset = AssetDatabase.LoadAllAssetsAtPath(assetPath) .OfType <Sprite>() .FirstOrDefault(x => x.GetSpriteID().ToString() == spriteId); if (spriteAsset != null) { cacheAssetInfo = new AssetCacheInfo() { assetGuid = assetGuid, spriteId = spriteId, spriteAsset = spriteAsset, }; spriteAssetCache.Enqueue(cacheAssetInfo); } } else { spriteAsset = cacheAssetInfo.spriteAsset; spriteAssetCache.Remove(cacheAssetInfo); spriteAssetCache.Enqueue(cacheAssetInfo); } if (spriteAsset == null) { return; } DeleteCreatedAsset(); var texture = spriteAsset.texture; var rect = spriteAsset.rect; var pivot = spriteAsset.pivot; var pixelsPerUnit = spriteAsset.pixelsPerUnit; var border = spriteAsset.border; var sprite = Sprite.Create(texture, rect, pivot, pixelsPerUnit, 0, SpriteMeshType.FullRect, border); sprite.name = DummyAssetName; sprite.hideFlags = HideFlags.DontSaveInEditor; Image.sprite = sprite; }
//----- property ----- //----- method ----- private void ApplyDummyAsset() { if (Application.isPlaying) { return; } DeleteCreatedAsset(); if (RawImage.texture != null && RawImage.texture.name != DummyAssetName) { return; } if (string.IsNullOrEmpty(assetGuid)) { return; } var assetPath = AssetDatabase.GUIDToAssetPath(assetGuid); if (string.IsNullOrEmpty(assetPath)) { return; } if (textureAssetCache == null) { textureAssetCache = new FixedQueue <AssetCacheInfo>(100); } Texture textureAsset = null; var cacheAssetInfo = textureAssetCache.FirstOrDefault(x => x.assetGuid == assetGuid); if (cacheAssetInfo == null) { textureAsset = AssetDatabase.LoadMainAssetAtPath(assetPath) as Texture; if (textureAsset != null) { cacheAssetInfo = new AssetCacheInfo() { assetGuid = assetGuid, textureAsset = textureAsset, }; textureAssetCache.Enqueue(cacheAssetInfo); } } else { textureAsset = cacheAssetInfo.textureAsset; textureAssetCache.Remove(cacheAssetInfo); textureAssetCache.Enqueue(cacheAssetInfo); } if (textureAsset == null) { return; } DeleteCreatedAsset(); var texture = new Texture2D(textureAsset.width, textureAsset.height, TextureFormat.ARGB32, false); texture.name = DummyAssetName; texture.hideFlags = HideFlags.DontSaveInEditor; Graphics.ConvertTexture(textureAsset, texture); // Bug: UnityのバグでこのタイミングでアクティブなRenderTextureを空にしないと下記警告が出る. // 「Releasing render texture that is set to be RenderTexture.active!」. RenderTexture.active = null; RawImage.texture = texture; }