我已经设法在不在屏幕上的实体上禁用动画。但是,我正在寻找一种更纯粹的基于数学的方法(而不是视口点技巧)。有人知道我怎样才能有效地“Jobify”这段代码吗?
public class VisibilitySystem : ComponentSystem
{
protected override void OnUpdate()
{
var dt = Time.deltaTime;
var cam = Camera.main;
Entities.ForEach((ref IsVisible IsVisible, ref LocalToWorld LocalToWorld) =>
{
Vector3 viewPos = cam.WorldToViewportPoint(LocalToWorld.Position);
if (viewPos.x > 0 && viewPos.x < 1 && viewPos.y > 0 && viewPos.y < 1 && viewPos.z > 0)
{
IsVisible.Value = true;
}
else IsVisible.Value = false;
});
}
}