视觉脚本点包组装问题

问题描述

所以我刚刚创建了一个新项目来解决视觉脚本,ECS和DOTS的问题,但是我遇到了一些问题,无法使一些统一物理的东西可以工作VisualScriptingPhysics.cs,它说缺少汇编参考,但是我已经检查了文档,并且包含了所有我想念的东西所需的参考

控制台出现2个错误

Library \ PackageCache \ com.unity.visualscripting.entities@0.4.0-preview.1 \ Runtime \ VisualScriptingPhysics.cs(94,58):错误CS0246:找不到类型或名称空间名称“ ICollisionEventsJob”(您是否缺少using指令或程序集引用?)

Library \ PackageCache \ com.unity.visualscripting.entities@0.4.0-preview.1 \ Runtime \ VisualScriptingPhysics.cs(94,39):错误CS0246:找不到类型或名称空间名称“ ITriggerEventsJob”(您是否缺少using指令或程序集引用?)

witch正在引用此struct CollectCollisionsJob : ITriggerEventsJob,ICollisionEventsJob巫婆,它在VisualScriptingPhysics.cs中是Visual Scripting软件包的一部分,以使其与统一物理学兼容,并且它在文档中说它需要的参考文献是Unity。代码顶部是否有任何方法可以修复此手册,请告诉我

引发错误文件的完整代码请记住,这是软件包的一部分,而不是我的代码让我知道它是否可以解决,还是必须等到统一更新其软件包后才可以

#if VS_DOTS_PHYSICS_EXISTS
using System;
using System.Collections.Generic;
using Runtime;
using Unity.Collections;
using Unity.Entities;
using Unity.Jobs;
using Unity.Physics;
using Unity.Physics.Systems;
using UnityEngine.VisualScripting;

namespace VisualScripting.Physics
{
    public static class VisualScriptingPhysics
    {
        [Hidden]
        struct VisualScriptingTriggerEvent : IVisualScriptingEvent {}

        [Hidden]
        struct VisualScriptingCollisionEvent : IVisualScriptingEvent {}

        public static readonly ulong TriggerEventId = VisualScriptingEventUtility.ComputeEventTypeHash<VisualScriptingTriggerEvent>();
        public static readonly ulong CollisionEventId = VisualScriptingEventUtility.ComputeEventTypeHash<VisualScriptingCollisionEvent>();

        [Flags]
        public enum EventType
        {
            Collision = 1,Trigger = 2
        }

        public static JobHandle SetupCollisionTriggerData(EntityManager entityManager,int frame,ref NativeHashMap<(Entity,Entity),CollisionTriggerData> nativeMultiHashMap,EntityQuery q,EventType collisionMode,JobHandle inputDeps)
        {
            var calculateEntityCount = q.CalculateEntityCount();
            if (nativeMultiHashMap.Capacity < calculateEntityCount)
                nativeMultiHashMap.Capacity = calculateEntityCount * 2; // Register the collision with both EntityA and EntityB as a key

            var job = new CollectCollisionsJob
            {
                Frame = frame,CollInfos = nativeMultiHashMap,};

            var buildPhysicsWorldSystem = entityManager.World.GetorCreateSystem<BuildPhysicsWorld>();
            var stepPhysicsWorldSystem = entityManager.World.GetorCreateSystem<StepPhysicsWorld>();
            switch (collisionMode)
            {
                case EventType.Collision:
                    job.EventType = EventType.Collision;
                    return ICollisionEventJobExtensions
                        .Schedule(job,stepPhysicsWorldSystem.Simulation,ref buildPhysicsWorldSystem.PhysicsWorld,inputDeps);
                case EventType.Trigger:
                    job.EventType = EventType.Trigger;
                    return ITriggerEventJobExtensions
                        .Schedule(job,inputDeps);
                default:
                    throw new NotImplementedException();
            }
        }

        public struct CollisionTriggerData : IEquatable<CollisionTriggerData>
        {
            public Entity Other;
            public int Frame;
            public CollisionState State;
            public EventType EventType;

            public bool Equals(CollisionTriggerData other)
            {
                return Other.Equals(other.Other);
            }

            public override bool Equals(object obj)
            {
                return obj is CollisionTriggerData other && Equals(other);
            }

            public override int GetHashCode()
            {
                return Other.GetHashCode();
            }
        }

        public enum CollisionState
        {
            None,Enter,Stay,Exit,}

        struct CollectCollisionsJob : ITriggerEventsJob,ICollisionEventsJob
        {
            public int Frame;
            public NativeHashMap<(Entity,CollisionTriggerData> CollInfos;
            public EventType EventType;

            public void Execute(TriggerEvent triggerEvent)
            {
                var ea = triggerEvent.EntityA;
                var eb = triggerEvent.EntityB;
                Process(ea,eb);
            }

            public void Execute(CollisionEvent collisionEvent)
            {
                var ea = collisionEvent.EntityA;
                var eb = collisionEvent.EntityB;
                Process(ea,eb);
            }

            void Process(Entity ea,Entity eb)
            {
                RegisterCollisionData(ea,eb);
                RegisterCollisionData(eb,ea);
            }

            void RegisterCollisionData(Entity self,Entity other)
            {
                bool found = false;
                if (CollInfos.TryGetValue((self,other),out var collInfo))
                {
                    found = true;
                    if (collInfo.Frame == Frame - 1) // had a collision during the prev frame
                    {
                        collInfo.State = CollisionState.Stay;
                        collInfo.Frame = Frame;
                        CollInfos[(self,other)] = collInfo;
                    }
                }

                // new collision
                if (!found)
                {
                    CollInfos.Add((self,new CollisionTriggerData
                    {
                        Other = other,Frame = Frame,State = CollisionState.Enter,EventType = EventType
                    });
                }
            }
        }
    }
}
#endif

这是我安装的所有软件包的版本和更新日期,我试图更改其他软件包的版本,但始终收到相同的错误

突发版本1.3.3-2020年6月26日

城堡核心版本1.0.1-2019年6月13日

Collections Version 0.11.0-preview.17-2020年7月22日

自定义NUnit版本1.0.0-2019年4月3日

实体版本0.13.0-preview.24-2020年7月22日

Graph Tools Foundation版本0.3.0-preview.1-2020年7月31日

Havok Physics for Unity 0.3.1-preview-2020年7月28日

Hybrid Renderer Version 0.7.0-preview.24-2020年7月22日

输入系统版本1.0.0-2020年4月29日

Jobs版本0.4.0-preview.18-2020年7月22日

数学版本1.1.0-2019年7月11日

Mono Cecil版本0.1.5-preview-2019年4月3日

Moq版本1.0.0-2019年6月13日

Newtonsoft Json版本2.0.0-预览版-2019年12月13日

性能测试API版本2.2.0-预览版-2020年5月27日

平台版本0.6.0-preview.1-2020年7月7日

Properties Version 1.3.1-preview-2020年6月17日

Properties UI Version 1.3.1-preview-2020年6月18日

可编写脚本的构建管道版本1.6.4-预览版-2020年2月11日

Searcher版本4.0.9-2019年11月11日

序列化版本1.3.1-预览版-2020年6月18日

测试框架1.1.16版-2020年7月27日

TextMeshPro版本3.0.1-2020年7月27日

时间轴版本1.3.4-2020年6月11日

Unity Collaborate 1.3.8版-2020年6月12日

Unity Physics版本0.4.1-预览-2020年7月27日

Unity UI版本1.0.0-2020年8月5日

Visual Scripting ECS版本0.4.0-preview.1-2020年7月31日

Visual Studio Code Editor版本1.2.1-2020年5月20日

Visual Studio Editor 2.0.2版-2020年6月2日

解决方法

Havok Physics for Unity破坏了所有内容,我将其与Visual Scripting ECS和Unity Physics一起恢复为旧版本,最终使用过时的东西吐出了关于它的不同错误,因此我最终只是删除了Havok Physics,并且将其修复了一次我会再次更新其余部分,所以我想我要等到他们更新Havok并查看此问题是否已解决