可视化脚本点包 Assemble 问题
Visual Scripting Dots Package Assemble issue
所以我刚刚创建了一个新项目来处理可视化脚本、ECS 和 DOTS,但我遇到了一些问题,无法让一些统一物理的东西工作 VisualScriptingPhysics.cs 它说它有 Assemble 缺少参考,但我已经检查了文档,它包含了工作所需的所有参考,我缺少什么
我在控制台中收到 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 指令或程序集引用?)
正在引用此 struct CollectCollisionsJob : ITriggerEventsJob, ICollisionEventsJob
在 VisualScriptingPhysics.cs Visual Scripting 包的一部分,因为它与 unity physics 和它所说的参考兼容它需要在文档中 Unity.Physics 在代码的顶部有什么方法可以修复本手册请告诉我
抛出错误的文件的完整代码请记住,这是包的一部分,而不是我的代码让我知道我是否可以修复它,或者我是否必须等到统一更新他们的包
#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, stepPhysicsWorldSystem.Simulation, ref buildPhysicsWorldSystem.PhysicsWorld, 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, 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, other), new CollisionTriggerData
{
Other = other,
Frame = Frame,
State = CollisionState.Enter,
EventType = EventType
});
}
}
}
}
}
#endif
这是我安装的所有软件包及其更新的版本和日期我尝试更改不同软件包的版本但仍然出现相同的错误
突发版本 1.3.3 - 2020 年 6 月 26 日
城堡核心版本 1.0.1 - 2019 年 6 月 13 日
集合版本 0.11.0-preview.17 - 2020 年 7 月 22 日
自定义 NUnit 版本 1.0.0 - 2019 年 4 月 3 日
实体版本 0.13.0-preview.24 - 2020 年 7 月 22 日
图形工具基础版本 0.3.0-preview.1 - 2020 年 7 月 31 日
Havok Physics for Unity 0.3.1 预览版 - 2020 年 7 月 28 日
混合渲染器版本 0.7.0-preview.24 - 2020 年 7 月 22 日
输入系统版本 1.0.0 - 2020 年 4 月 29 日
乔布斯版本 0.4.0-preview.18 - 2020 年 7 月 22 日
数学版本 1.1.0 - 2019 年 7 月 11 日
Mono Cecil 版本 0.1.5-预览 - 2019 年 4 月 3 日
最小起订量版本 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 日
属性版本 1.3.1-预览 - 2020 年 6 月 17 日
属性 UI 版本 1.3.1-预览 - 2020 年 6 月 18 日
可编写脚本的构建管道版本 1.6.4 预览 - 2020 年 2 月 11 日
搜索器版本 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 协作版本 1.3.8 - 2020 年 6 月 12 日
Unity 物理版本 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 代码编辑器版本 1.2.1 - 2020 年 5 月 20 日
Visual Studio 编辑器版本 2.0.2 - 2020 年 6 月 2 日
Havok Physics for Unity 破坏了一切 我将它与 Visual Scripting ECS 和 Unity Physics 一起恢复到旧版本 最终使用过时的东西吐出关于它的不同错误所以我最终只是删除了 Havok物理学,一旦我再次更新其余部分,它就会修复所有问题,所以我想我会等到他们更新 Havok,看看这个问题是否得到解决
所以我刚刚创建了一个新项目来处理可视化脚本、ECS 和 DOTS,但我遇到了一些问题,无法让一些统一物理的东西工作 VisualScriptingPhysics.cs 它说它有 Assemble 缺少参考,但我已经检查了文档,它包含了工作所需的所有参考,我缺少什么
我在控制台中收到 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 指令或程序集引用?)
正在引用此 struct CollectCollisionsJob : ITriggerEventsJob, ICollisionEventsJob
在 VisualScriptingPhysics.cs Visual Scripting 包的一部分,因为它与 unity physics 和它所说的参考兼容它需要在文档中 Unity.Physics 在代码的顶部有什么方法可以修复本手册请告诉我
抛出错误的文件的完整代码请记住,这是包的一部分,而不是我的代码让我知道我是否可以修复它,或者我是否必须等到统一更新他们的包
#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, stepPhysicsWorldSystem.Simulation, ref buildPhysicsWorldSystem.PhysicsWorld, 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, 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, other), new CollisionTriggerData
{
Other = other,
Frame = Frame,
State = CollisionState.Enter,
EventType = EventType
});
}
}
}
}
}
#endif
这是我安装的所有软件包及其更新的版本和日期我尝试更改不同软件包的版本但仍然出现相同的错误
突发版本 1.3.3 - 2020 年 6 月 26 日
城堡核心版本 1.0.1 - 2019 年 6 月 13 日
集合版本 0.11.0-preview.17 - 2020 年 7 月 22 日
自定义 NUnit 版本 1.0.0 - 2019 年 4 月 3 日
实体版本 0.13.0-preview.24 - 2020 年 7 月 22 日
图形工具基础版本 0.3.0-preview.1 - 2020 年 7 月 31 日
Havok Physics for Unity 0.3.1 预览版 - 2020 年 7 月 28 日
混合渲染器版本 0.7.0-preview.24 - 2020 年 7 月 22 日
输入系统版本 1.0.0 - 2020 年 4 月 29 日
乔布斯版本 0.4.0-preview.18 - 2020 年 7 月 22 日
数学版本 1.1.0 - 2019 年 7 月 11 日
Mono Cecil 版本 0.1.5-预览 - 2019 年 4 月 3 日
最小起订量版本 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 日
属性版本 1.3.1-预览 - 2020 年 6 月 17 日
属性 UI 版本 1.3.1-预览 - 2020 年 6 月 18 日
可编写脚本的构建管道版本 1.6.4 预览 - 2020 年 2 月 11 日
搜索器版本 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 协作版本 1.3.8 - 2020 年 6 月 12 日
Unity 物理版本 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 代码编辑器版本 1.2.1 - 2020 年 5 月 20 日
Visual Studio 编辑器版本 2.0.2 - 2020 年 6 月 2 日
Havok Physics for Unity 破坏了一切 我将它与 Visual Scripting ECS 和 Unity Physics 一起恢复到旧版本 最终使用过时的东西吐出关于它的不同错误所以我最终只是删除了 Havok物理学,一旦我再次更新其余部分,它就会修复所有问题,所以我想我会等到他们更新 Havok,看看这个问题是否得到解决