Page 1 of 1

与资产管理插件不兼容

Posted: 2024/10/28 11:34
by kvfreedom
LogicToolkit与Smart LibraryEasy Workspace都不兼容,无法做到将资产管理插件界面中的Prefab拖到LogicToolkit节点的InputField<AssetReferenceGameObject>中,会错误的出现节点创建框。
1.png
1.png (7.22 KiB) Viewed 6135 times

Re: 与资产管理插件不兼容

Posted: 2024/10/28 12:04
by caitsithware
我们不为其他资产提供单独的兼容性支持。
首先,隔离问题并验证哪个资产存在问题。
然后,仅当您在 Logic Toolkit 端发现“不限于与特定资产的兼容性问题(即使未安装其他资产也会出现问题)”时,请报告问题的详细信息。

Re: 与资产管理插件不兼容

Posted: 2024/10/28 15:04
by kvfreedom
caitsithware wrote: 2024/10/28 12:04 我们不为其他资产提供单独的兼容性支持。
首先,隔离问题并验证哪个资产存在问题。
然后,仅当您在 Logic Toolkit 端发现“不限于与特定资产的兼容性问题(即使未安装其他资产也会出现问题)”时,请报告问题的详细信息。
当我尝试第一个资产管理插件出现不兼容的情况时,我并不认为是Logic Toolkit的Bug,但当我尝试第二个资产管理插件出现同样的不兼容的情况时,我开始怀疑这可能是Logic Toolkit的Bug。
由于Logic Toolkit不为其他资产提供单独的兼容性支持,于是我进行了实验,试着确定是否为普遍性的Bug。
1.png
1.png (50.34 KiB) Viewed 6058 times
我发现Test 1 2 3 都无法从资产管理插件面板中进行拖拽赋值,并且会弹出节点创建框,Test 4 5 6 都是可以正常拖拽赋值,这说明InputField AssetReference相关字段即使不使用其他资产插件也是可能有问题。
于是我继续实验,在未使用其他资产插件的情况下,将一个TaskComponent脚本拖入实验节点的每个实验字段上。拖入Test 1 2 3中时光标没有变化,松开鼠标后Console会警告,并且会弹出节点创建框。拖入Test 4 5 6中时光标会变为一个禁止符号,松开鼠标后没有任何触发。
这可能就是问题的原因,将InputField AssetReference相关字段的拖拽赋值逻辑改为和一般类型的字段相同,可能资产管理插件拖拽赋值的兼容性问题就解决了。

Re: 与资产管理插件不兼容

Posted: 2024/10/28 15:43
by caitsithware
这是之前报告的无法拖放 Addressable 包的 AssetReference 等问题的重现吗?

之前的报告涉及以下主题:
Addressable相关参数的改进建议
该问题已在 1.1.2 版本中暂时修复。
这从根本上来说是Addressable包中的PropertyDrawer如何实现的问题。
我们会重新验证,但是PropertyDrawer内部的问题很难处理。

Re: 与资产管理插件不兼容

Posted: 2024/10/28 17:31
by kvfreedom
caitsithware wrote: 2024/10/28 15:43 这是之前报告的无法拖放 Addressable 包的 AssetReference 等问题的重现吗?

之前的报告涉及以下主题:
Addressable相关参数的改进建议
该问题已在 1.1.2 版本中暂时修复。
这从根本上来说是Addressable包中的PropertyDrawer如何实现的问题。
我们会重新验证,但是PropertyDrawer内部的问题很难处理。
不是之前报告的无法拖放问题的重现,之前报告的问题已经很好的解决了。
我怀疑这次的问题,最大的可能是错误弹出的节点创建框打断了赋值,如果PropertyDrawer很难处理,是否可以尝试其他方式解决,比如将逻辑改为鼠标拖拽资产移动到节点内部后松开鼠标就不会弹出节点创建框了,只有在节点外部松开鼠标才会弹出节点创建框。

Re: 与资产管理插件不兼容

Posted: 2024/10/28 23:41
by caitsithware
首先,你把什么东西从哪里拖到哪里?
被拖动的对象是如何创建的?
请告诉我重现的具体和最少步骤,以便任何人都可以使用相同的步骤重现它。
如果bug报告中没有详细的重现步骤,则需要时间来确认重现。
尝试搜索“如何编写错误报告”之类的内容。这是你的开发顺利进行的必备知识,了解它总没有坏处。
另请阅读本论坛顶部的论坛规则。
感谢您的合作。

Re: 与资产管理插件不兼容

Posted: 2024/10/29 00:15
by caitsithware
我忘记了警告故事。
您是否阅读了该控制台上显示的警告?
“Dragged asset is not valid as an Asset Reference. {File Path}”
像这样的警告意味着您拖动了一个最初无法分配给 AssetReference 的对象。
这与 Logic Toolkit 无关,这是您如何使用 Addressables 的问题。

Re: 与资产管理插件不兼容

Posted: 2024/10/29 02:50
by kvfreedom
caitsithware wrote: 2024/10/28 23:41 首先,你把什么东西从哪里拖到哪里?
被拖动的对象是如何创建的?
请告诉我重现的具体和最少步骤,以便任何人都可以使用相同的步骤重现它。
如果bug报告中没有详细的重现步骤,则需要时间来确认重现。
尝试搜索“如何编写错误报告”之类的内容。这是你的开发顺利进行的必备知识,了解它总没有坏处。
另请阅读本论坛顶部的论坛规则。
感谢您的合作。
我重新写了一个精简的报告。
Logic Toolkit Version 1.4.0
Unity Version 6000.0.24f1

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() { }
}
1.png
1.png (33.4 KiB) Viewed 6042 times
将TestTask脚本从Unity Project面板中分别拖入节点的Test 4 5 6字段上,松开鼠标左键后,没有任何触发。
将TestTask脚本从Unity Project面板中分别拖入节点的Test 1 2 3字段上,松开鼠标左键后,预期结果是同样没有任何触发,实际结果是出现节点创建框。

Re: 与资产管理插件不兼容

Posted: 2024/10/29 03:30
by caitsithware
感谢您的详细报告。
原因似乎是Addressables包的PropertyDrawer的实现方式有问题。
由于根本的解决方案是不可能的,我们将考虑按照您的建议,在放入节点时不显示节点创建菜单。
然而,这些症状似乎是由于将原本没有意义的对象拖放到 AssetReferenceGameObject 等中而引起的。
事实上,显示节点创建菜单是一个小问题,因此我们将给予它较低的优先级。

Re: 与资产管理插件不兼容

Posted: 2024/10/29 08:43
by kvfreedom
caitsithware wrote: 2024/10/29 03:30 感谢您的详细报告。
原因似乎是Addressables包的PropertyDrawer的实现方式有问题。
由于根本的解决方案是不可能的,我们将考虑按照您的建议,在放入节点时不显示节点创建菜单。
然而,这些症状似乎是由于将原本没有意义的对象拖放到 AssetReferenceGameObject 等中而引起的。
事实上,显示节点创建菜单是一个小问题,因此我们将给予它较低的优先级。
我尝试屏蔽节点创建框,将GraphEditor脚本中的ShowCreateNodeMenu方法改为

Code: Select all

       
internal void ShowCreateNodeMenu(Vector2 position, FieldAssignor fieldAssignor = null, MenuNameType menuNameType = MenuNameType.Default, System.Action onClosed = null)
{return;}
结果仍然无法将资产管理插件面板中的Prefab拖入InputField<AssetReferenceGameObject>字段中,而且我发现资产管理插件也不支持拖拽到Unity Inspector面板组件上的AssetReferenceGameObject字段中,所以可以确定无法拖拽的问题和Logic Toolkit无关。
所以显示节点创建框这个小问题,可以不用修改。