与资产管理插件不兼容
Posted: 2024/10/28 11:34
LogicToolkit与Smart Library和Easy Workspace都不兼容,无法做到将资产管理插件界面中的Prefab拖到LogicToolkit节点的InputField<AssetReferenceGameObject>中,会错误的出现节点创建框。
Support Forum
https://logictoolkit-forum.caitsithware.com/
https://logictoolkit-forum.caitsithware.com/viewtopic.php?t=34
当我尝试第一个资产管理插件出现不兼容的情况时,我并不认为是Logic Toolkit的Bug,但当我尝试第二个资产管理插件出现同样的不兼容的情况时,我开始怀疑这可能是Logic Toolkit的Bug。caitsithware wrote: ↑2024/10/28 12:04 我们不为其他资产提供单独的兼容性支持。
首先,隔离问题并验证哪个资产存在问题。
然后,仅当您在 Logic Toolkit 端发现“不限于与特定资产的兼容性问题(即使未安装其他资产也会出现问题)”时,请报告问题的详细信息。
不是之前报告的无法拖放问题的重现,之前报告的问题已经很好的解决了。caitsithware wrote: ↑2024/10/28 15:43 这是之前报告的无法拖放 Addressable 包的 AssetReference 等问题的重现吗?
之前的报告涉及以下主题:
Addressable相关参数的改进建议
该问题已在 1.1.2 版本中暂时修复。
这从根本上来说是Addressable包中的PropertyDrawer如何实现的问题。
我们会重新验证,但是PropertyDrawer内部的问题很难处理。
我重新写了一个精简的报告。caitsithware wrote: ↑2024/10/28 23:41 首先,你把什么东西从哪里拖到哪里?
被拖动的对象是如何创建的?
请告诉我重现的具体和最少步骤,以便任何人都可以使用相同的步骤重现它。
如果bug报告中没有详细的重现步骤,则需要时间来确认重现。
尝试搜索“如何编写错误报告”之类的内容。这是你的开发顺利进行的必备知识,了解它总没有坏处。
另请阅读本论坛顶部的论坛规则。
感谢您的合作。
Code: Select all
using UnityEngine;
using LogicToolkit;
using UnityEngine.AddressableAssets;
[System.Serializable]
public class TestTask : TaskComponent
{
[SerializeField] private InputField<AssetReferenceGameObject> _test1;
[SerializeField] private InputField<AssetReference> _test2;
[SerializeField] private InputField<AssetReferenceSprite> _test3;
[SerializeField] private InputField<GameObject> _test4;
[SerializeField] private InputField<LogicAsset> _test5;
[SerializeField] private InputField<Sprite> _test6;
protected override void OnActivated() { }
protected override TaskStatus OnExecute()
{
return TaskStatus.Running;
}
protected override void OnDeactivated() { }
}
我尝试屏蔽节点创建框,将GraphEditor脚本中的ShowCreateNodeMenu方法改为caitsithware wrote: ↑2024/10/29 03:30 感谢您的详细报告。
原因似乎是Addressables包的PropertyDrawer的实现方式有问题。
由于根本的解决方案是不可能的,我们将考虑按照您的建议,在放入节点时不显示节点创建菜单。
然而,这些症状似乎是由于将原本没有意义的对象拖放到 AssetReferenceGameObject 等中而引起的。
事实上,显示节点创建菜单是一个小问题,因此我们将给予它较低的优先级。
Code: Select all
internal void ShowCreateNodeMenu(Vector2 position, FieldAssignor fieldAssignor = null, MenuNameType menuNameType = MenuNameType.Default, System.Action onClosed = null)
{return;}