1
This commit is contained in:
49
Assets/BITKit/Unity/Scripts/Assets/YooAssetMaterialFix.cs
Normal file
49
Assets/BITKit/Unity/Scripts/Assets/YooAssetMaterialFix.cs
Normal file
@@ -0,0 +1,49 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using BITKit.IO;
|
||||
using Cysharp.Threading.Tasks;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using YooAsset;
|
||||
|
||||
namespace BITKit.Mod
|
||||
{
|
||||
public class YooAssetMaterialFix:IDisposable
|
||||
{
|
||||
private readonly ILogger<YooAssetMaterialFix> _logger;
|
||||
public YooAssetMaterialFix(ILogger<YooAssetMaterialFix> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
YooAssetUtils.OnPackageRegistered += OnPackageRegistered;
|
||||
foreach (var packageName in YooAssetUtils.RegisteredPackages)
|
||||
{
|
||||
OnPackageRegistered(packageName);
|
||||
}
|
||||
}
|
||||
|
||||
private async void OnPackageRegistered(string obj)
|
||||
{
|
||||
var package = YooAssets.GetPackage(obj);
|
||||
_logger.LogInformation("正在加载所有材质");
|
||||
var assetInfos = package.GetAssetInfos("material");
|
||||
foreach (var assetInfo in assetInfos)
|
||||
{
|
||||
var task = package.LoadAssetAsync<Material>(assetInfo.AssetPath);
|
||||
await task;
|
||||
var material = task.AssetObject.As<Material>();
|
||||
material.shader = material.shader;
|
||||
}
|
||||
_logger.LogInformation($"所有材质加载完成,已更新{assetInfos.Length}个材质");
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
// TODO 在此释放托管资源
|
||||
YooAssetUtils.OnPackageRegistered -= OnPackageRegistered;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user