Şu anda bir çevrimiçi oyun üzerinde çalışıyorum ve performans nedenleriyle HTML5'in tuvalini kullanmak yerine webgl kullanmaya karar verdim. Ben üç.js framework kullanıyorum ve niyetim hareketli hareketli sprite sahip olmaktır. Spritelar spriteta yerleştirilir ve ben doğru tekniği kullanmak ve zaman geçtikçe Sprite sanatını değiştirmek için UVOffset ve UVScale kullanın. Bu kodun performansını iyileştirmenin bir yolu olup olmadığını merak ediyordum, çünkü şu anda sahada yaklaşık 300 "oyuncu" da yavaşlamaya başlıyor.3.js 'de animasyonlu spriteların performansını iyileştirme
Selamlar
kodumu en önemli parçası aşağıdadır:
var image = THREE.ImageUtils.loadTexture("img/idlew.png");
function addPlayer(){
var mesh = new THREE.Sprite({map:image});//, affectedByDistance: false, useScreenCoordinates: false});
images.push(mesh);
mesh.position.set(Math.floor(Math.random() * 500), Math.floor(Math.random() * 500), 10);
scene.add(mesh);
mesh.uvScale.x = 96/1152;
mesh.scale.x = 0.1;
mesh.scale.y = 0.1;
}
var imgBackground = new THREE.MeshLambertMaterial({
map:THREE.ImageUtils.loadTexture('img/grass.jpg')
});
var background = new THREE.Mesh(new THREE.PlaneGeometry(1000, 1000),imgBackground);
scene.add(background);
scene.add(camera);
camera.rotation.x = -(Math.PI/2);
scene.add(new THREE.AmbientLight(0xFFFFFF));
addPlayer();
renderer.render(scene, camera);
var moveUp = false;
tick();
var ticker = 0;
var usedOne = 0;
function tick(){
ticker++;
if(ticker%10==0){
for (var i = 0; i < images.length; i++) {
images[i].uvOffset.x = usedOne * 0.0835;
};
usedOne++;
if(usedOne == 12) usedOne = 0;
addPlayer();
addPlayer();
addPlayer();
console.log(images.length);
}
requestAnimationFrame(tick);
renderer.render(scene, camera);
}
Yığın Taşması'na Hoş Geldiniz ve sorunu çözdüğünüze sevindim! Yani, bildiğiniz gibi, aşağıdaki soru bölümündeki yanıtınızı cevaplamak kesinlikle kabul edilebilir ve (kısa bir bekleme süresinden sonra) kabul edilen cevap olarak işaretleyin. Bu, gelecekte aynı konuya giren diğer kişilerin de çözümü daha hızlı bulmasına yardımcı olur. – Toji