Unity3D选择性渲染技术

来源:互联网 发布:淘宝店铺双十一方案 编辑:程序博客网 时间:2024/04/28 22:28

      话说大学毕业快一年了,加上在学校参加比赛做的一些游戏。实际上编程时间也有三年了。以前碰到问题总是到网上搜索答案。有时能很快的找到,有时找了很久也找不到。当找了很久都找不到想要的答案确实是十分的蛋疼。。。因此从今天开始我会陆续发一些主要关于Unity3D游戏开发,cocos2dx游戏开发,IOS,andriod应用开发,网络攻防的文章,偶尔发些关于PS,maya建模,AE视频处理,flash,DW,SQL等的文章,都是自己的一些经验体会,希望对广大的程序猿和美工设计狮们有所帮助。当然,由于本人水平有限,而且是第一次写技术博客,有什么错的地方希望大家多多指正。好了,话不多说,接下来进入正题。

    在用Unity搞手机上的游戏的时候遇到一个问题,就是电脑上不卡(帧率:60),手机上很卡(帧率:20),我的伙伴(代码哥一枚)觉得是GameObject的数量太多导致的,所以我负责游戏的场景优化。
     将所有东西都渲染好,这样会造成资源的浪费,所以我想让场景的东西在主角附近渲染,其他地方不渲染,这样就提升了游戏的速度,给所有场景加上tag,并且将代码附加到角色身上,具体代码如下:

using UnityEngine;
using System.Collections;

public class RenderSwitch : MonoBehaviour {
private GameObject[] go;
// Use this for initialization
        //written by LHH 
void Start () {
go=GameObject.FindGameObjectsWithTag("sence");
}
// Update is called once per frame
void Update () {
for(int i=0;i<go.Length;i++){
if(Mathf.Abs(Vector3.Distance(go[i].transform.position, this.transform.position))<=80f){
go[i].renderer.enabled=true;
}else{
go[i].renderer.enabled=false;
}
}
}
}
思想是获得所有场景物体,在80范围内开启渲染器,80外关闭渲染器,结果发现非常有效,有必要的时候就记录一下。


0 0
原创粉丝点击