我在Unity创建了一个村庄,但它的质量非常高,所以我遇到了性能问题。
我做了咬合烘烤并设法改善了一点。但Unity保持"看到"村庄即使它有很大的墙壁和我和村庄之间的大量树木。
当我离得太远时,我试图让整个城市消失,当我越来越近时,我会再次出现。
我试过这个脚本,但它没有用。 (脚本适用于AI,用于检测我是否足够接近以开始关注我)
gameObject在层次结构中的外观
里面是所有的道具分为3个其他Gameobjects(情节=围栏,和budynki =建筑物和道具=道具
(miasto是所有预制件所在的游戏对象的名称,我也将播放器控制器移动到此脚本,因此它应该检测到播放器)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Miasto : MonoBehaviour
{
public Transform player;
public float LookRadius = 240f;
void Start()
{
GetComponent<Miasto>().enabled = true;
}
void Update()
{
if (Vector3.Distance(player.position, this.transform.position) > 240)
{
GetComponent<Miasto>().enabled = false;
}
else
GetComponent<Miasto>().enabled = true;
}
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, LookRadius);
}
}
答案 0 :(得分:3)
试试这个,我禁用了meshRenderer,这使得它在视觉上消失了:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Miastro : MonoBehaviour
{
public Transform player;
MeshRenderer[] meshRenderer;
public float LookRadius = 240f;
void Start()
{
GetComponent<Miastro>().enabled = true;
meshRenderer = gameObject.GetComponentsInChildren<MeshRenderer>();
}
void Update()
{
if (Vector3.Distance(player.position, this.transform.position) > 240)
{
foreach (MeshRenderer renderer in meshRenderer)
{
renderer.enabled = false;
}
}
else
{
foreach (MeshRenderer renderer in meshRenderer)
{
renderer.enabled = true;
}
}
}
private void OnDrawGizmosSelected()
{
Gizmos.color = Color.red;
Gizmos.DrawWireSphere(transform.position, LookRadius);
}
}
答案 1 :(得分:3)
你可以把它变成一个LOD对象,你的对象只有2级,什么也没有。