スクリプト生成に失敗する
Posted: 2025/01/06 15:03
- Logic Toolkit バージョン:1.6.4
- Unityバージョン:6000.0.32f1
以下のスクリプトの各種メソッドの生成に失敗します。
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using Cysharp.Threading.Tasks;
using UnityEngine;
using UnityEngine.AddressableAssets;
using UnityEngine.ResourceManagement.AsyncOperations;
using Object = UnityEngine.Object;
namespace Game.AssetManagement
{
[Serializable]
public sealed class AddressableAssetLoader
{
private List<AsyncOperationHandle> _handles = new();
public async UniTask<T> LoadAssetAsync<T>(AssetReference assetReference, CancellationToken cancellationToken = default) where T : Object
{
var loadedHandle = _handles.FirstOrDefault(handle => handle.IsValid() && handle is { IsDone: true, Result: not null });
if (loadedHandle.IsValid())
{
// ロード済みの場合、そのまま返す
return loadedHandle.Result as T;
}
// ロードされていない場合、新たにロードする
var newHandle = assetReference.LoadAssetAsync<T>();
_handles.Add(newHandle);
return await newHandle.Task;
}
public async UniTask<GameObject> InstantiateAsync(AssetReferenceGameObject assetReferenceGameObject, Transform parent = null,
CancellationToken cancellationToken = default)
{
var loadedHandle = _handles.FirstOrDefault(handle => handle.IsValid() && handle is { IsDone: true, Result: not null });
if (loadedHandle.IsValid())
{
// ロード済みの場合、そのまま返す
var gameObjects = await Object.InstantiateAsync(loadedHandle.Result as GameObject, parent).ToUniTask(cancellationToken: cancellationToken);
return gameObjects.FirstOrDefault();
}
// ロードされていない場合、新たにロードする
var newHandle = assetReferenceGameObject.InstantiateAsync(parent);
_handles.Add(newHandle);
return await newHandle.Task;
}
public void ReleaseAsset(AssetReference assetReference)
{
var handle = _handles.FirstOrDefault(handle => handle.IsValid() && handle is { Result: not null });
if (!handle.IsValid())
{
Debug.Log("有効なハンドルが見つからないため、解放せずに終了します。");
return;
}
Addressables.Release(handle);
_handles.Remove(handle);
Debug.Log("アセットを解放しました。");
}
}
}
Code: Select all
Assets\Logic Toolkit\Generated Scripts\LogicToolkitGeneratedScripts\LogicToolkitGeneratedScripts.LogicToolkit_ScriptGenerator.additionalfile(2,1): error LT_CS1061: 'AddressableAssetLoader' does not contain a definition for 'InstantiateAsync'
LogicToolkitGeneratedScripts.asmdefの中を見てみると、UniTaskやAddressables,
ResourceManagementなどの必要なasmdefが参照できていないようで、手動で追加してもコンパイル時に自動で削除されてしまいます。
新規プロジェクトでも再現しましたので、バグの類かと思い記載しました。