Spegeleffekten använder också ett eget renderingsmål. Du kan prova effekten genom att trycka på ”M” i spelet. Scenen renderas till detta ett renderingsmål och sätts som en textur på ett plan som matchar skärmstorleken som vi kan animera. När övergången är klar är body-taggen utformad med en ”transform scaleX(-1)” och vi kan byta till vanligt renderingsläge igen. En bonus är att all html är inverterad också. Testa det, men det är verkligen svårt att spela, så lägg till ”gud” i webbadressen för att fortsätta spela.
Samling av sopor och föremål
Att hålla sophämtaren så lugn som möjligt är mycket viktigt. GC kommer alltid att ha saker att göra även med mycket optimerad kod, men undvik onödigt skräp. Ett grundläggande exempel; istället för att skapa nya THREE.Vector3() när du placerar objekt i varje ram, använd istället .set(x,y,z) på det befintliga objektet. Och använd objektpoolning.
För vanliga objekt, allokera så mycket av dem som du vet att du kommer att använda i förväg och spara och återanvänd objekt som du vet kommer att dyka upp igen. Tilldela fler objekt genom att förlänga poolen automatiskt, eller kanske i ett tillstånd där det inte är lika viktigt med en jämn bildhastighet, som direkt efter att spelet är över eller mellan omgångarna.
Allt behöver inte slås samman, ibland är det bättre att låta GC ta hand om dem. Det är en balans, och mätning är nyckeln. Du kan också lägga in en console.warn varje om du tilldelar mer än en fast tröskel och du kan snabbt se om det finns en potentiell läcka.