Начал писать LOD, блин, я начинаю влюбляться в юнити, знаю 5% движка, а уже чтото получается )
Написал 3-х ступенчатый LOD, конечно дорабатывать еще надо, но не сегодня (поздновато)

using UnityEngine;
using System.Collections;
public class LOD : MonoBehaviour {
public Mesh meshHiPoly, meshMidPoly, meshLowPoly;
public int lodLevel, currentLodLevel;
public float distanceHiPoly, distanceMidPoly;
public float distance;
public Camera thisCamera;
// Use this for initialization
void Start ()
{
if (meshHiPoly!=null) {lodLevel++;}
if (meshMidPoly!=null) {lodLevel++;}
if (meshLowPoly!=null) {lodLevel++;}
//защита от криворукости )
if (lodLevel==2 && meshLowPoly!=null) {meshMidPoly=meshLowPoly; meshLowPoly=null;}
if (lodLevel==1 && meshLowPoly!=null) {meshHiPoly=meshLowPoly; meshLowPoly=null;}
if (lodLevel==1 && meshMidPoly!=null) {meshHiPoly=meshMidPoly; meshMidPoly=null;}
thisCamera = Camera.main;
}
// Update is called once per frame
void Update ()
{
distance = Vector3.Distance(transform.position,thisCamera.transform.position);
if (distance<distanceHiPoly && currentLodLevel!=1)
{
currentLodLevel=1;
GetComponent<MeshFilter>().mesh = meshHiPoly;
}
if (distance<distanceMidPoly && distance>distanceHiPoly && currentLodLevel!=2)
{
currentLodLevel=2;
GetComponent<MeshFilter>().mesh = meshMidPoly;
}
if (distance>distanceMidPoly && currentLodLevel!=3)
{
currentLodLevel=3;
GetComponent<MeshFilter>().mesh = meshLowPoly;
}
}
}
Сделал чтобы пользователь ложил меши сам, но косяк в том, что материалы должны быть разные.
Наверное самый простой вариант это префабы ложить?
И еще вопрос, как можно сделать такой же скроллер дистанций как в Про версии LOD'a ?
А еще как можно достать уровень графики, ну чтобы знать fantastic она или normal..?
Также, если у меня чтото сильно коряво, пишите!