技术突破:H5游戏性能超越Unity3d


测试设备:小米1

测试方法:

在同屏跑500个动画,每个动画有10帧(每帧为不同的独立图片),图片大小为(100*100),场景中随机切换图片,每帧移动位置,整体滚屏;

测试结果:(下面有实拍视频)

引擎 帧数

Laya.player 44-52

Unity3d 9-18

注:本次还针对其它APP引擎进行了测试,同样未进行性能优化的情况下Laya.player完胜其它APP引擎产品;

测试点评:经过1200个日夜,Layabox的加速器(Laya.player)支持下的产品性能已超越APP的性能,尤其是同样未作性能优化的情况下,Laya.player对产品性能的优化程度绝对是无懈可击的完胜。除了小米1,Laya.player在512M系统内存(实际可用系统内存为300M)的早期智能机下,仍然可流畅运行重度H5游戏(例如:猎魂之刃);

H5前景:

Laya.playe在未来会支持所有H5产品(不受引擎限制)的加速。H5游戏替代APP游戏已经不止是可能,而是趋势!

视频实拍:

H5测试代码:

conch.config.setFpsParam( 400,300,80,"#ffffff" );

conch.config.showFps( true );

//Laya加速器性能测试程序

var pCanvas = window.document.createElement( "canvas" );

var pContext = pCanvas.getContext("2d");

var _width=1024;

var _height=768;

var _url="http://127.0.0.1:8899";

var pRootNode = conch.createNode();

pRootNode.pos(0,0);

pRootNode.size( _width,_height );

pRootNode.bgcolor( "#888888" );

conch.setRootNode( pRootNode );

var pTopNode=conch.createNode();

pTopNode.pos(0,0);

pTopNode.size( _width,_height );

pTopNode.bgcolor( "#123456" );

pRootNode.insert( pTopNode,0,0 );

var childs=[];

function createChilds()

{

for(var i=0;i<500;i++)

{

var node = conch.createNode();

childs.push(node);

node._left=Math.random()*(_width-100);

node._top=Math.random()*(_height-100);

node._stepX=i%2==0?-1:1;

node._stepY=i%4==0?-1:1;

node.pos(node._left,node._top);

node.size(_imgs[0].width,_imgs[0].height);

node.imageId = i%_imgs.length;

node.image( _imgs[node.imageId] );

pTopNode.insert( node,0,0 );

}

}

var _imgs=[],_loadedCount=0;

for(var i=0;i<12;i++)

{

var pImg = new image();

_imgs.push(pImg);

pImg.οnlοad=function()

{

_loadedCount++;

if(_loadedCount==_imgs.length) createChilds();

}

var si = parseInt(Math.random()*100000) % 12;

pImg.src=_url+"/" + si + ".png";

}

var updateCount = 0;

function onDrawFrame()

{

updateCount++;

var k=(updateCount%10)*(updateCount%20==0?-1:1);

for(var i=0,sz=childs.length;i<sz;i++)

{

var c=childs[i];

c.pos(c._left+k*c._stepX,c._top+k*c._stepY);

(updateCount%10 == 0) && c.image( _imgs[ ( c.imageId + updateCount )% 12 ] );

}

pTopNode.pos(updateCount%200,0);

}

setInterval(onDrawFrame, 15);


Unity3D测试代码:

using UnityEngine;

using System.Collections;

public class Test : MonoBehaviour {

private Sprite[] sps;

private Texture2D[] tex;

private GameObject[] objList;

public GameObject obj;

public GameObject container;

public int objLength = 500;

private float time = 0;

private int rate = 0;

private TextMesh txtMesh ;

void Start () {

tex = new Texture2D[12];

for (int i = 0; i < 12; i++) {

tex[i] = (Texture2D)Resources.Load (i+"");

}

sps = new Sprite[12];

txtMesh = ((GameObject)GameObject.Find("FPSText")).GetComponent<TextMesh> ();

for (int i = 0; i<12; i++) {

sps [i] = Sprite.Create(tex[i],new Rect(0,0,88,92),new Vector2(0,0));

}

objList = new GameObject[objLength];

for (int i = 0; i < objLength; i++) {

objList[i] = (GameObject)GameObject.Instantiate(obj);

objList[i].transform.parent = container.transform;

objList[i].transform.position = new Vector3(Random.Range(-800,800)/100f,Random.Range(-500,500)/100f,-10);

objList[i].GetComponent<SpriteRenderer>().sprite = sps[Random.Range(0,100000)%12];

}

}

private int updateCount = 0;

void Update () {

time += Time.deltaTime;

rate ++;

if (time > 1.0f) {

txtMesh.text = rate + "";

time = rate = 0;

}

updateCount++;

int k = (updateCount % 10) * (updateCount % 20 == 0 ? -1 : 1);

Vector3 vec3Container = container.transform.position;

vec3Container.x += 0.03f;

container.transform.position = vec3Container;

if(updateCount % 200 == 0)

container.transform.position = new Vector3(0,0,0);

for(int i = 0,sz = objList.Length; i < sz; i++)

{

GameObject obj = objList[i];

if(updateCount % 5 == 0)

objList[i].GetComponent<SpriteRenderer>().sprite = sps[Random.Range(0,100000)%12];

Vector3 vec3 = obj.transform.localPosition;

vec3.x += (vec3.x>8? -16 : (Random.Range(0,10) / 300f));

vec3.y += (vec3.y>5? -10 : (Random.Range(0,10) / 300f));

obj.transform.localPosition = vec3;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值