如何解决视觉脚本点包组装问题
所以我刚刚创建了一个新项目来解决视觉脚本,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并查看此问题是否已解决
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。