Physics:-Use the built-in physics.It might seem like a waste of cycles การแปล - Physics:-Use the built-in physics.It might seem like a waste of cycles ไทย วิธีการพูด

Physics:-Use the built-in physics.I

Physics:

-Use the built-in physics.
It might seem like a waste of cycles to have a fully 3D physics engine running the show for a 2D game, but bear in mind that the Nvidia PhysX engine will be running in Unity’s native core. We’re talking about a hyper-optimised engine maintained by large professional teams, and not a hobbyist 2D engine. Freeze Z position and X/Y rotation for that 2D feel.

-Try to use a 1/1 scale.
By this I mean, 1 unit = 1 meter. You can use larger or smaller scales, but you’re likely to encounter some weirdness when it comes to collisions, and the speed at which objects fall. Remember, a grand piano without air resistance will fall as fast as a dead baby but if everything is large, it will seem slow. You can fiddle with gravity, but again, you’re running the risk of messing with collisions. I like to use a 1/32 scale compared to my sprites with a cam size of 160.

-Get your object Mass right.
Just like with scale, if you have a grand piano weighing 2gm or a dead baby weighing 500kg things are going to get unpredictable. Try to keep it realistic-ish.

-Mesh colliders can be slow compared to primitive box/sphere colliders.
While a sphere may have many more verts than say a cube, the uniform distance from the centre would make it massively easier to calculate than lots of individual triangles.

-You can simulate more complex shapes by combining primitive colliders.
If you have a parent object with say a Box Collider and Rigidbody component, you can add child objects with just a Box Collider. The entire object will collide like one solid multipart object.

-Continuing from the above…
Rather than having several of these linked together, you can add more child objects with RigidBodies and Colliders, and use Joints to connect them to the parent object. You could build a compound car for example with a parent body to move the entire thing.

-Multiple basic joints are not supported on one game object…
…but multiple configurable joints are. Rather than having a network of jointed objects you could for example have a spring and a slider from wheel to axle cutting down on a suspension object in between.

-Objects with a collider but no RigidBody are considered static.
Moving these is expensive, so if you’re creating them with code, add the collider and physics material (to the collider) after positioning.

-While it’s considered good practice to keep your solver iterations constant…
…you might find it beneficial to use the full amount only every 2nd update. I.e. 8,4,8,4,8,4. If this alleviates some of the processor load the solver for example may not have to skip iterations, and will actually provide a more consistent simulation. I said it was going to be counter-intuitive.

-While the use of Interpolation and Extrapolation on RigidBodies is discouraged en-masse..
…in some cases you might find that turning these on, and reducing the overall solver iterations provides a better simulation. Fiddle.

-Lower your timestep!
If you’re aiming for an unrealistic 60FPS and the phone is constantly struggling, you’re best just to settle for a lower framerate and give it some breathing room. I like to use a 0.03 fixed timestep with a maximum of about 0.05. Again, it can be slightly counter intuitive decreasing timesteps to get higher framerates, but give it a shot.

-Timescale scaling.
This could help, depending on the feel your’e going for. It simply simulates more time passing between each iteration. Setting this too high will obviously mess with collisions, especially if an object has traveled say, a mile in one frame, it’s not going to hit a damn thing.



Sprites & Textures

My engine uses a hybrid system of Sprite Manager2/EZGUI and RageSpline for sprites, but I’ve used 2D Toolkit and much of the following still applies.

-Easy on the fill rate!
It might seem obvious but if you have a 64×64 image, with only the top left 32×32 filled, that’s still a 64×64 sprite. Trim your transparent images where possible. Lots of libraries will do this automatically.

-Hide sprites you’re not using.
Make a reference to them and set them active = false; They won’t be drawn when offscreen anyway, but something has to determine whether or not they’re visible and chances are you know best, especially when one sprite may be fully hidden behind another and is still drawn.

-Batching is your friend. But not always.
If you have 40 collectable coins in your level, all using the same sprite then batching will use the one texture source multiple times on a giant mesh, saving on draw calls. Draw calls=time. In some very rare cases the batch calculations can be a hinderance, depending on how your game’s set up, but if that’s the case, chances are you’re doin’ it wrong.

-Resize your sprite’s Quad (the sprite itself) rather than its transform.
If you have say a sprite component on a GameObject, then resize the GameObject’s transform, you’re going to break batching on that sprite. Instead consider the next point. With SM2 for example, you’d just set the Sprite/PackedSprite’s “Width” and “Height” properties in the inspector.

-If you have a 64×64 sprite, on a 6px wide cube…
…then it’s going to look like a small version of your image, but upon zooming in, you’ll see that the full 64×64 sprite has been UV mapped to the cube in perfect detail. Remember what I said about fill rate. Unless your’e zooming in and out, you might not want to use such a large texture.

-Use a Sprite Sheet/Atlas where possible.
This one ought to go higher, but what the hell. A sprite sheet will allow you to use commonly grouped items like your character, coins, platforms, etc in a single image/texture. Why? Less draw calls! The same part of a texture can be UV mapped to different parts of a 3D shape multiple times. I.e. if you were modelling a red and white stripy candy cane, you’d draw one white and one red line, then apply them multiple times. This is a similar concept.

-Use the right shaders!
There’s no point using lit shaders if you’ve no lighting, and there’s no point using a transparent shader on a solid square sprite. You can find dedicated mobile shaders in the Unity Store, by googling and doing a little copy-pasta via MonoDevelop or using those that come with SM2/Unity. As of 3.5 I believe the default shaders do a pretty decent job. Coming from various other backgrounds it might be easy to underestimate the importance of these even in a 2D environment.

-Do you really need antialiasing/filtering on your sprites?
Be sure to check on your target device. Some things will look pretty horrific scaled up on your monitor, but absolutely fine on those tiny high-density screens. Give it a shot, and remember to apply changes to your Sprite Atlas where possible.

-Easy on the compression!
DXT (DirectX) compression will do a fantastic job on your PC, with hardware decoding, but mobile devices lack this hardware decoder and will have to do it in software. I.e. Slowly. Generally IOS devices will support hardware PVRTC compression and Androids ETC, and keep in mind what I said in the last point. DXT might be fine given that it offers better clarity during say level loads, but you certainly don’t want to be decompressing them during gameplay.

-Do you need Mip Maps?
Mip maps are scaled down versions of a texture stored within the compressed texture itself. So depending on how far away you are, a lower res copy can be used. Obviously this takes more memory and more decompression time. You probably don’t need ’em for a 2D game.

-Conversely…
…rather than using giant sprites on a non retina display and tiny sprites on a retina display, it might be worth your while making a small and large version of textures and using each accordingly.

-Read/Write enabled textures generate a second copy.
Second copy needs more memory. In most cases, you can just leave this turned off.

-Tinting a sprite will break batching…
…and create a new copy of the source texture in memory. Avoid where possible, or try to pre-make any colors you’ll need! E.g. if all your Numbers in a text sprite sheet are to be red.. do it in photoshop.



Loading, Saving and Object Access:



-Do you really need to recreate your GUI for each level?
You can hide it and have it persist when loading different scenes, reducing loading time.

-GameObject.Instantiate() is slow!
One common technique (which proved absolutely vital in Truck Toss) is to create a pool of objects during loading. E.g. 4 of each enemy type. When an object’s no longer needed, disable it and shove it back in the pool instead of recreating it. So you’d have a function along the lines of MakePrefab(“path/to/prefab”); which will only only call Resources.Load() provided there are none in the pool.

-Resources.Load() is even slower!
This function does not cache, and involves reading from the device’s HD or equivalent. Ideally you want a hybrid pool system if you’re doing a lot of loadingunloading. I.e. your standard pool system which preloads objects, but when the instantiate function is called, it keeps a different copy in a different list. Whenever instantiate’s called and there aren’t enough in the pool but there’s a copy in the spare list, Instantiate from that rather than doing a Resources.Load fresh again. This is a balancing act of memory use and processor use, so target it for your device.

-GameObject.Find() and GetCompoenent()..
…are slow (You saw that one coming, right?). If you’re going to be using an object or component repeatedly, then it makes sense to create a reference to it in a local variable rather than looking it up repeatedly.

-Reflective functions can be noticeably slower.
Reflection is the ability for a languagecode to look within itself and get method names ypesscope etc and potentially alter them. I.e. calling a function by string name, or using delegates. Try to avoid this kinda of behaviour for performance criti
0/5000
จาก: -
เป็น: -
ผลลัพธ์ (ไทย) 1: [สำเนา]
คัดลอก!
ฟิสิกส์:-ใช้ฟิสิกส์ในตัวมันอาจเหมือนเสียของวงจรจะมีเครื่องยนต์ฟิสิกส์ 3D อย่างเต็มที่ทำงานเกม 2D แต่หมีที่จะรันโปรแกรม PhysX ของ Nvidia ในหลักดั้งเดิมของสามัคคี เรากำลังพูดถึงโดยทีมงานมืออาชีพขนาดใหญ่เครื่องยนต์ไฮเปอร์เหมาะงานกราฟฟิก ไม่เป็น hobbyist 2D เครื่องยนต์และ ตรึงตำแหน่ง Z และ X / Y หมุนที่ 2D รู้สึก -ลองใช้สเกล 1/1 ตามนี้ ผมหมายถึง 1 หน่วย = 1 เมตร คุณสามารถใช้ปรับขนาดใหญ่ขึ้น หรือเล็กลง แต่คุณอาจพบบาง weirdness เมื่อมันมาถึงตาม และความเร็วในฤดูใบไม้ร่วงที่วัตถุ จำ แกรนด์เปียโน โดยต้านทานอากาศจะตกอย่างรวดเร็วที่เด็กตาย แต่ถ้าทุกอย่างมีขนาดใหญ่ มันจะดูเหมือนช้า คุณสามารถใช้สัญชาตญาณแรงโน้มถ่วง แต่อีกครั้ง คุณใช้ความเสี่ยงของ messing กับตาม ชอบใช้สเกล 1/32 ที่เปรียบเทียบกับ sprites ของฉันกับกล้องขนาด 160-รับของวัตถุมวลขวา เหมือนกับสเกล ถ้าคุณมีเปียโนน้ำหนัก 2 กรัมหรือทารกตาย ชั่ง กก.สิ่งจะได้รับคาดเดาไม่ พยายามให้ realistic-ish -Colliders ตาข่ายได้ช้าเมื่อเทียบกับเขตดั้งเดิมกล่อง colliders ขณะที่ทรงกลมอาจมี verts มากมากกว่าว่า cube สม่ำเสมอระยะห่างจากศูนย์กลางจะทำให้มันง่ายขึ้นอย่างหนาแน่นในการคำนวณกว่ามากมายสามเหลี่ยมแต่ละ -คุณสามารถจำลองรูปร่างซับซ้อนมากขึ้น โดยการรวม colliders ดั้งเดิม ถ้าคุณมีวัตถุหลักมี ว่า ชนอนุภาคขนาดกล่องและคอมโพเนนต์ Rigidbody คุณสามารถเพิ่มวัตถุลูก มีเพียงการชนอนุภาคขนาดกล่อง วัตถุจะเกิดการชนกันเช่นวัตถุสมบัติแข็งหนึ่ง -ต่อจากข้างบน... แทนที่จะมีหลาย ๆ อย่างเชื่อมโยงกัน คุณสามารถเพิ่มวัตถุลูกเพิ่มเติม ด้วย RigidBodies และ Colliders และใช้ข้อต่อเพื่อเชื่อมต่อเข้ากับวัตถุหลัก คุณสามารถสร้างรถผสมกับเนื้อหาหลักการย้ายสิ่งทั้งหมดเช่น -รอยต่อพื้นฐานหลายไม่สนับสนุนบนวัตถุหนึ่งเกม... ... แต่มีข้อกำหนดหลายต่อ นอกจากเครือข่ายของวัตถุ jointed คุณสามารถเช่นสปริงและได้เลื่อนจากล้อกับเพลาตัดลงบนวัตถุระงับในระหว่าง -วัตถุที่ มีการชนอนุภาคขนาดแต่ไม่ RigidBody จะถือว่าคงที่ ย้ายเหล่านี้มีราคาแพง ดังนั้น ถ้าคุณกำลังสร้างนั้น มีรหัส เพิ่มวัสดุชนอนุภาคขนาดและฟิสิกส์ (การชนอนุภาคขนาด) ตำแหน่ง-ในขณะที่ถือว่าดีที่จะทำซ้ำของโปรแกรมแก้ปัญหาคง...... .you อาจพบว่าประโยชน์ที่จะใช้เงินเต็มจำนวนเท่านั้น update ทุก 2 เช่น 8,4,8,4,8,4 ถ้านี้ alleviates ของโหลดตัวประมวลผลจาก solver เช่นอาจไม่มีการข้ามการเกิดซ้ำ และจริงจะมีการจำลองมากขึ้น กล่าวว่า มันเป็นไปได้ counter-intuitive-ขณะใช้แทรกแทรงและ Extrapolation บน RigidBodies en masse ท้อ...... .in บางกรณีคุณอาจพบว่าเปิดเหล่านี้ และลดการเกิดซ้ำโดยรวมโปรแกรมแก้ปัญหาช่วยให้การจำลองดีกว่า ซอ -ลด timestep ของคุณ ถ้าคุณกำลังเล็งสำหรับ FPS 60 ไม่มี และโทรศัพท์ได้ตลอดเวลา ดิ้นรน คุณสุดเพียงชำระสำหรับ framerate ล่าง และให้บางห้องหายใจ ชอบใช้ timestep ถาวร 0.03 ที่สุดของเกี่ยวกับ 0.05 อีก มันได้เล็กน้อยนับง่ายลดลง timesteps รับ framerates สูง แต่ให้มันยิง-สเกลมาตราส่วนนี้ไม่ได้ ตาม your'e ความรู้สึกไป มันก็เลียนแบบผ่านระหว่างเกิดซ้ำแต่ละครั้ง ตั้งค่านี้สูงเกินไปจะเห็นยุ่งกับตาม โดยเฉพาะอย่างยิ่งเมื่อวัตถุเดินทางพูด ไมล์ในเฟรมเดียว ไม่มันตีสิ่งไอ้กัน Sprites และพื้นผิว เครื่องยนต์ของฉันใช้ระบบผสมสไปร์ท Manager2/EZGUI และ RageSpline สำหรับ sprites แต่ฉันใช้มือ 2D และมากต่อไปนี้ยังใช้ -อัตราการเติมง่าย มันอาจดูเหมือนชัดเจน แต่ถ้าคุณมีรูปที่ 64 × 64 เดียวด้านบนซ้าย 32 × 32 กรอกข้อมูลที่เป็นยังคงเป็น 64 × 64 สไปร์ท ตัดแต่งรูปโปร่งใสสุด ของไลบรารีจะทำโดยอัตโนมัติ-คุณไม่ได้ใช้ sprites ซ่อน อ้างอิงเหล่านั้น และตั้งค่าใช้งาน = false พวกเขาจะไม่สามารถออกเมื่อมีแสดงอย่างไรก็ตาม แต่บางสิ่งบางอย่างเพื่อตรวจสอบว่า พวกเขากำลังมองเห็น และมีโอกาสคุณทราบส่วน โดยเฉพาะอย่างยิ่งเมื่อสไปร์ทหนึ่งอาจเต็มซ่อนอยู่เบื้องหลังอีก และยังคงวาด-การสร้างชุดข้อมูลเป็นเพื่อน แต่ไม่ ถ้าคุณมีเหรียญ 40 เพื่อในระดับของคุณ ทั้งหมดใช้สไปร์ทเดียวที่สร้างชุดข้อมูลแล้ว จะใช้เนื้อหนึ่งแหล่งข้อมูลหลายครั้งบนตาข่ายยักษ์ บันทึกบนวาดเรียก วาดเรียก =เวลา ในบางกรณียากที่การคำนวณชุดสามารถเป็น hinderance ขึ้นอยู่กับว่าเกมของตั้ง แต่ถ้าเป็นกรณีนี้ โอกาสคุณกำลัง doin' มันไม่ถูกต้อง -ปรับขนาดรูปสี่เหลี่ยมของสไปรต์ (สไปร์ทเอง) แทนที่จะแปลงเป็น ถ้าคุณมีคอมโพเนนต์สไปร์ทพูดบน GameObject การ แล้วปรับขนาดแปลงของ GameObject คุณกำลังจะทำลายบนสไปรต์ที่การสร้างชุดข้อมูล แต่ พิจารณาจุดถัดไป SM2 เช่น คุณจะเพียงแค่ตั้งการ สไปร์ท/PackedSprite ของคุณสมบัติ "กว้าง" และ "ความสูง" ในการตรวจสอบ-ถ้าคุณมีตัว 64 × 64 สไปร์ท บน cube กว้าง 6px ... ... .then มันจะเหมือนรุ่นเล็กของรูป แต่เมื่อซูม คุณจะเห็นว่า สไปร์ทเต็ม 64 × 64 ได้รับ UV ที่แมปกับ cube ในรายละเอียดที่สมบูรณ์แบบ จำสิ่งที่ผมพูดเกี่ยวกับอัตราการเติม ยกเว้น your'e ซูมออก คุณอาจไม่ต้องใช้ลายขนาดใหญ่ได้ -ใช้ Atlas/แผ่น ที่สไปร์ทได้ นี้ควรไปสูง แต่สิ่งที่นรก แผ่นสไปร์ทจะอนุญาตให้คุณใช้โดยทั่วไปรายการของอักขระ เหรียญ แพ ลตฟอร์ม ฯลฯ ในแบบภาพ/พื้นผิวเดียวกัน ทำไม เรียกน้อยวาด ส่วนเดียวกันของพื้นผิวได้รังสียูวีที่แมปกับส่วนต่าง ๆ ของรูปร่าง 3 มิติหลายครั้ง เช่นถ้าคุณมีแบบจำลองเท้าขนม stripy สีแดง และสีขาว คุณจะวาดหนึ่งสีขาวและเส้นสีแดงหนึ่ง แล้วใช้หลายครั้ง นี่คือแนวคิดที่คล้ายกัน -ใช้ shaders ขวา มีจุดใช้ shaders ไฟถ้าคุณไม่มีแสงสว่าง และมี จุดใช้ shader โปร่งใสบนสไปร์ทเป็นสี่เหลี่ยมทึบ คุณสามารถค้นหา shaders เฉพาะโทรศัพท์มือถือในร้านค้าสามัคคี googling และการทำสำเนาพาสต้าน้อยผ่าน MonoDevelop หรือการใช้ที่มาพร้อมกับ SM2/สามัคคี ณ 3.5 ผมเชื่อ shaders เริ่มต้นทำงานดี มาจากพื้นหลังต่าง ๆ อื่น ๆ อาจจะดูถูกดูแคลนความสำคัญเหล่านี้ในสภาพแวดล้อมแบบ 2D-คุณจริง ๆ ต้อง/กรอง antialiasing บน sprites ของคุณหรือไม่ ตรวจสอบให้แน่ใจว่าได้ตรวจสอบบนอุปกรณ์เป้าหมาย บางสิ่งบางอย่างจะดูสวย horrific ปรับค่าบนจอภาพของคุณ แต่อย่างดีบนหน้าจอ high-density ที่เล็ก ๆ ให้มันยิง และจำต้องเปลี่ยนแปลงไปของ Atlas สไปร์ทได้-ง่ายในการบีบอัด อัด DXT (DirectX) จะทำงานบนคอมพิวเตอร์ของคุณ กับฮาร์ดแวร์ถอดรหัส ที่ยอดเยี่ยม แต่ขาดตัวถอดรหัสฮาร์ดแวร์นี้อุปกรณ์มือถือ และจะต้องทำในซอฟต์แวร์ เช่นช้า โดยทั่วไปอุปกรณ์ IOS จะสนับสนุนการบีบอัดฮาร์ดแวร์ PVRTC และหุ่นยนต์ที่ใช้เป็นต้น และจำไว้โดนในจุดสุดท้าย DXT อาจดีที่มีความคมชัดดีในระหว่างการพูดระดับโหลด แต่แน่นอนไม่ต้องการจะขยายไปในระหว่างเล่นเกม-คุณต้องแมป Mip หรือไม่แผนที่ Mip จะปรับลงรุ่นเนื้อที่เก็บไว้ภายในเนื้อบีบตัวเอง ดังนั้นขึ้นอยู่กับวิธีไกลคุณอยู่ สำเนา res ต่ำสามารถใช้ แน่นอนนี้ใช้หน่วยความจำและเวลาอัด คงไม่ได้ 'em สำหรับเกม 2D -ในทางกลับกัน...... .rather ใช้ sprites ยักษ์ไม่ใช่จอแสดงและ sprites เล็ก ๆ บนจอแสดง มันอาจจะมีมูลค่าในขณะที่คุณทำเป็นรุ่นขนาดเล็ก และใหญ่ของพื้นผิว และใช้ตามนั้น -อ่าน/เขียนใช้พื้นผิวสร้างสำเนาที่สอง สำเนาที่สองต้องจำ ในกรณีส่วนใหญ่ คุณสามารถเพียงปล่อยปิด-แต้มสีสไปรต์จะหยุดการสร้างชุดข้อมูล... ... และสร้างสำเนาใหม่ของพื้นผิวของแหล่งที่มาในหน่วยความจำ หลีกเลี่ยงได้ หรือก่อนทำสีใด ๆ ที่คุณต้องลอง เช่นถ้าหมายเลขของคุณทั้งหมดในแผ่นงานสไปร์ทข้อความจะเป็นสีแดง... ทำใน photoshop โหลด บันทึก และวัตถุการเข้าถึง: -จริง ๆ ต้องสร้าง GUI ของคุณสำหรับแต่ละระดับ คุณสามารถซ่อน และจะคงอยู่เมื่อโหลดฉากต่าง ๆ ลดเวลา -GameObject.Instantiate() ถูกช้า เทคนิคทั่วไปหนึ่ง (ซึ่งพิสูจน์ความสำคัญจริง ๆ ในการโยนรถบรรทุก) คือการ สร้างกลุ่มของวัตถุในระหว่างการโหลด เช่น 4 ของศัตรูแต่ละชนิด เมื่อวัตถุไม่จำเป็น ปิด และผลัก มันกลับในสระว่ายน้ำแทนที่จะสร้างมัน ดังนั้น คุณจะมีฟังก์ชันพร้อม MakePrefab("path/to/prefab") ซึ่งจะเรียก Resources.Load() เท่าให้มีรอบสระว่ายน้ำ-Resources.Load() จะช้าแม้ ฟังก์ชันนี้แคช และเกี่ยวข้องกับการอ่านจากอุปกรณ์ HD หรือเทียบเท่า เชิญคุณต้องผสมสระระบบถ้าคุณกำลังทำของ loadingunloading เช่นสระว่ายน้ำมาตรฐานระบบที่ preloads วัตถุ แต่เมื่อฟังก์ชัน instantiate เรียก ว่า มันทำให้สำเนาที่แตกต่างกันในรายการอื่น เมื่อใดก็ตามสร้างอินสแตนซ์ของเรียก และมีไม่เพียงพอในการสระ แต่มีสำเนาอยู่ในรายการอะไหล่ Instantiate จากที่มากกว่าทำสด Resources.Load อีกครั้ง นี่คือบัญญัติดุลใช้หน่วยความจำและใช้ตัวประมวลผล ดังนั้น เป้าหมายสำหรับอุปกรณ์ของคุณ -GameObject.Find() และ GetCompoenent() ... ... .are ช้า (คุณเห็นมาที่หนึ่ง ขวา) ถ้าคุณกำลังใช้วัตถุหรือส่วนประกอบซ้ำ ๆ แล้วมันทำให้รู้สึกการสร้างการอ้างอิงไปในตัวแปรท้องถิ่นแทนที่หามันซ้ำ ๆ-ฟังก์ชันสะท้อนแสงได้ช้าลงอย่างเห็นได้ชัด สะท้อนคือ ความสามารถในการ languagecode เพื่อดูภายในตัวเอง และได้รับวิธีการ names ypesscope เป็นต้น และอาจเปลี่ยนแปลงได้ เช่นเรียกฟังก์ชันสตริงที่ชื่อ หรือใช้ผู้รับมอบสิทธิ์ พยายามหลีกเลี่ยงนี้ kinda ของพฤติกรรมสำหรับประสิทธิภาพการทำงาน criti
การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 2:[สำเนา]
คัดลอก!
ฟิสิกส์: . ใช้งานในตัวฟิสิกส์มันอาจจะดูเหมือนเสียรอบที่จะมีเครื่องยนต์ฟิสิกส์ 3D ที่ใช้แสดงสำหรับเกม 2D แต่จำไว้ว่าเครื่องยนต์ Nvidia PhysX จะทำงานในหลักของความสามัคคีของชาวพื้นเมือง เรากำลังพูดถึงเกี่ยวกับเครื่องยนต์มากเกินไปการเพิ่มประสิทธิภาพการเก็บรักษาโดยทีมงานมืออาชีพที่มีขนาดใหญ่และไม่อดิเรกเครื่องยนต์ 2D ตรึงตำแหน่ง Z และ X / Y หมุนเพื่อความรู้สึกที่ 2D. ลองใช้ 1/1 ขนาด. โดยนี้ผมหมายถึง 1 หน่วย = 1 เมตร คุณสามารถใช้เครื่องชั่งขนาดใหญ่หรือเล็ก แต่คุณมักจะพบความแปลกประหลาดบางอย่างเมื่อมันมาถึงการชนและความเร็วที่วัตถุฤดูใบไม้ร่วง โปรดจำไว้ว่าแกรนด์เปียโนโดยไม่ต้องแรงต้านของอากาศจะลดลงอย่างรวดเร็วเท่าที่ทารกตาย แต่ถ้าทุกอย่างที่มีขนาดใหญ่ก็จะดูเหมือนช้า คุณสามารถคุ้นเคยกับแรงโน้มถ่วง แต่อีกครั้งคุณใช้ความเสี่ยงของการล้อเล่นกับชน ผมชอบที่จะใช้ขนาด 1/32 เมื่อเทียบกับสไปรต์ของฉันที่มีขนาดของบ 160 รับคำวัตถุมวลของคุณได้. เช่นเดียวกับที่มีขนาดถ้าคุณมีแกรนด์เปียโนชั่งน้ำหนัก 2GM หรือชั่งน้ำหนักทารกที่ตายแล้วสิ่ง 500kg จะไป ได้รับการคาดเดาไม่ได้ พยายามที่จะให้มันสมจริง ish. -Mesh colliders ได้ช้าเมื่อเทียบกับแบบดั้งเดิมกล่อง / colliders ทรงกลม. ในขณะที่รูปทรงกลมอาจมี Verts อื่น ๆ อีกมากมายกว่าก้อนบอกระยะห่างจากใจกลางสม่ำเสมอจะทำให้มันง่ายขึ้นอย่างหนาแน่นกว่าในการคำนวณจำนวนมาก ของสามเหลี่ยมแต่ละ. คุณสามารถจำลองรูปทรงที่ซับซ้อนมากขึ้นโดยการรวม colliders ดั้งเดิม. ถ้าคุณมีวัตถุแม่พูดกับ Collider กล่องและส่วนประกอบ Rigidbody คุณสามารถเพิ่มวัตถุเด็กมีเพียงกล่อง Collider วัตถุทั้งหมดจะเกิดการชนเช่นเดียวกับวัตถุที่เป็นของแข็ง multipart. -Continuing จากข้างบน ... แทนที่จะมีหลายเหล่านี้เชื่อมโยงกันคุณสามารถเพิ่มวัตถุมากขึ้นกับเด็กและ RigidBodies colliders และการใช้ข้อต่อที่จะเชื่อมต่อไปยังวัตถุแม่ คุณสามารถสร้างรถสารประกอบเช่นกับร่างกายของผู้ปกครองที่จะย้ายสิ่งทั้งหมด. ประเทศหลายข้อต่อพื้นฐานจะไม่ได้รับการสนับสนุนบนวัตถุหนึ่งเกม ... ... แต่ข้อต่อที่กำหนดหลาย แทนที่จะมีเครือข่ายร่วมกันของวัตถุที่คุณสามารถยกตัวอย่างเช่นมีฤดูใบไม้ผลิและเลื่อนจากล้อแกนตัดลงบนวัตถุที่อยู่ในระหว่างการระงับ. -Objects กับ Collider RigidBody แต่ไม่ได้รับการพิจารณาคง. ย้ายเหล่านี้มีราคาแพงดังนั้นหาก คุณกำลังสร้างพวกเขาด้วยรหัสเพิ่มวัสดุ Collider และฟิสิกส์ (เพื่อ Collider) หลังจากที่การวางตำแหน่ง. -While ก็ถือว่าการปฏิบัติที่ดีเพื่อให้ซ้ำแก้ของคุณอย่างต่อเนื่อง ... ... คุณอาจพบว่าเป็นประโยชน์ต่อการใช้เงินเต็มจำนวนเฉพาะทุกการปรับปรุงครั้งที่ 2 . เช่น 8,4,8,4,8,4 หากนี่บรรเทาบางโหลดของโปรเซสเซอร์แก้ตัวอย่างเช่นอาจจะไม่ได้ที่จะข้ามการทำซ้ำและที่จริงจะช่วยให้การจำลองสอดคล้องกันมากขึ้น ผมว่ามันเป็นไปได้ที่เคาน์เตอร์. -While การใช้งานของการแก้ไขและการคาดการณ์ใน RigidBodies เป็นกำลังใจ en-ค์ไรเดอ .. ... ในบางกรณีคุณอาจพบว่าการเปลี่ยนเหล่านี้บนและลดซ้ำแก้โดยรวมให้ดีขึ้นการจำลอง . ซอ. -Lower timestep ของคุณหากคุณกำลังเล็งสำหรับ 60FPS ไม่สมจริงและโทรศัพท์อยู่ตลอดเวลาดิ้นรนคุณที่ดีที่สุดเพียงแค่ชำระสำหรับเฟรมที่ต่ำกว่าและให้มันหายใจบางห้อง ผมชอบที่จะใช้ timestep คงที่ 0.03 สูงสุด 0.05 อีกครั้งก็สามารถ counter เล็กน้อยที่ใช้งานง่ายลดลง timesteps ที่จะได้รับ framerates สูงขึ้น แต่ให้มันยิง. ปรับ -Timescale. นี้จะช่วยให้ขึ้นอยู่กับความรู้สึก your'e ไป มันก็จำลองเวลามากขึ้นผ่านระหว่างแต่ละซ้ำ การตั้งค่านี้สูงเกินไปเห็นได้ชัดจะยุ่งกับการชนกันโดยเฉพาะอย่างยิ่งถ้าวัตถุได้เดินทางไปพูดไมล์ในกรอบก็ไม่ได้ไปตีสิ่งที่แช่ง. ผีและพื้นผิวของเครื่องมือของฉันจะใช้ระบบไฮบริดของสไปรท์ Manager2 / EZGUI และ RageSpline สำหรับ สไปรท์ แต่ผมเคยใช้เครื่องมือ 2D และอีกต่อไปยังคงใช้. ง่ายในอัตราการเติมเต็ม! มันอาจดูเหมือนชัดเจน แต่ถ้าคุณมี 64 × 64 ภาพมีเพียงด้านบนซ้าย 32 × 32 ที่เต็มไปด้วยที่ยังคง 64 × 64 เทพดา ตัดภาพโปร่งใสของคุณที่เป็นไปได้ จำนวนมากของห้องสมุดจะทำเช่นนี้โดยอัตโนมัติ. สไปรท์ -Hide คุณไม่ได้ใช้. อ้างอิงให้กับพวกเขาและพวกเขาตั้งใช้งาน = false; พวกเขาจะไม่ได้รับการวาดเมื่อ Offscreen อยู่แล้ว แต่บางสิ่งบางอย่างที่มีการตรวจสอบหรือไม่ว่าพวกเขากำลังมองเห็นและโอกาสที่คุณรู้ดีที่สุดโดยเฉพาะอย่างยิ่งเมื่อหนึ่งเทพดาอาจจะซ่อนอยู่เบื้องหลังอีกอย่างเต็มที่และยังคงวาด. -Batching เป็นเพื่อนของคุณ แต่ไม่เสมอไป. ถ้าคุณมี 40 เหรียญสะสมในระดับของคุณทั้งหมดที่ใช้เทพดาเดียวกันผสมจะใช้แหล่งเนื้อหนึ่งหลายครั้งในตาข่ายยักษ์ประหยัดวาดสาย วาดสาย = เวลา ในบางกรณีที่หายากมากการคำนวณชุดสามารถ hinderance ขึ้นอยู่กับวิธีการเล่นเกมของคุณตั้งค่า แต่ถ้าเป็นกรณีที่มีโอกาสที่คุณ doin 'มันผิด. -Resize Quad ผีของคุณ (ผีตัวเอง) มากกว่าที่ เปลี่ยน. ถ้าคุณมีบอกว่าเป็นส่วนประกอบเทพดาใน GameObject แล้วปรับขนาดของแปลง GameObject คุณกำลังจะทำลายผสมในเทพดาว่า แทนที่จะพิจารณาจุดต่อไป ด้วย SM2 ตัวอย่างเช่นคุณต้องการเพียงแค่ตั้งค่าสไปรท์ / PackedSprite ของ "ความกว้าง" และ "ความสูง" มีสรรพคุณในการตรวจสอบ. ถ้าคุณมี 64 × 64 เทพดาในก้อนกว้าง 6px ... ... แล้วมันจะมีลักษณะเหมือน รุ่นเล็กของภาพของคุณ แต่เมื่อซูมในคุณจะเห็นว่าเต็มรูปแบบ 64 × 64 เทพดาได้รับรังสียูวีแมปไปยังก้อนในรายละเอียดที่สมบูรณ์แบบ โปรดจำไว้ว่าสิ่งที่ผมพูดเกี่ยวกับอัตราการเติมเต็ม ยกเว้นกรณีที่ your'e ซูมเข้าและออกคุณอาจไม่ต้องการที่จะใช้เช่นเนื้อขนาดใหญ่. ใช้งานสไปรท์แผ่น / Atlas ที่เป็นไปได้. หนึ่งนี้ควรจะไปที่สูงขึ้น แต่สิ่งที่นรก แผ่นผีจะทำให้คุณสามารถใช้รายการทั่วไปเช่นการจัดกลุ่มตัวละครของคุณ, เหรียญ, แพลตฟอร์ม ฯลฯ ในภาพเดียว / เนื้อ ทำไม? โทรวาดน้อย! ส่วนหนึ่งเดียวกันของพื้นผิวรังสียูวีสามารถแมปไปยังส่วนต่าง ๆ ของรูปทรง 3 มิติหลายครั้ง เช่นถ้าคุณสร้างแบบจำลอง stripy แดงและสีขาวอ้อยขนมที่คุณต้องการวาดสีขาวและเส้นสีแดงหนึ่งแล้วใช้พวกเขาหลายครั้ง นี่คือแนวคิดที่คล้ายกัน. shaders ใช้งานที่ถูกต้อง! มีจุดโดยใช้เฉดสีสว่างถ้าคุณได้แสงไม่ได้และมีจุดใดใช้ shader โปร่งใสเทพดาตารางที่เป็นของแข็ง คุณสามารถค้นหา shaders มือถือโดยเฉพาะในร้านค้าเอกภาพโดย googling และการทำเล็ก ๆ น้อย ๆ สำเนาพาสต้าผ่าน MonoDevelop หรือการใช้ที่มาพร้อมกับ SM2 / ความสามัคคี ในฐานะที่เป็น 3.5 ผมเชื่อว่า shaders เริ่มต้นจะได้งานที่ดีงาม มาจากภูมิหลังที่อื่น ๆ มันอาจจะเป็นเรื่องง่ายที่จะประมาทความสำคัญเหล่านี้แม้จะอยู่ในสภาพแวดล้อมที่ 2D. ต้องการให้คุณจริงๆต้องลดรอยหยัก / สไปรท์ในการกรองของคุณให้แน่ใจว่าได้ตรวจสอบเกี่ยวกับอุปกรณ์เป้าหมายของคุณ บางสิ่งบางอย่างที่น่ากลัวจะมีลักษณะสวยปรับขึ้นบนหน้าจอของคุณ แต่อย่างดีบนหน้าจอมีความหนาแน่นสูงเล็ก ๆ เหล่านั้น ให้มันยิงและอย่าลืมที่จะใช้การเปลี่ยนแปลง Atlas สไปรท์ของคุณที่เป็นไปได้. ง่ายในการบีบอัด! DXT (DirectX) การบีบอัดจะไม่ได้งานที่ยอดเยี่ยมบนคอมพิวเตอร์ของคุณด้วยการถอดรหัสฮาร์ดแวร์ แต่โทรศัพท์มือถือขาดถอดรหัสฮาร์ดแวร์นี้และจะ ต้องทำมันในซอฟแวร์ คือช้า โดยทั่วไปอุปกรณ์ IOS จะให้การสนับสนุนฮาร์ดแวร์และการบีบอัด PVRTC หุ่นยนต์ ฯลฯ และเก็บไว้ในใจสิ่งที่ผมพูดในจุดสุดท้าย DXT อาจจะได้รับที่ดีที่จะมีความคมชัดที่ดีขึ้นในช่วงระดับโหลดพูด แต่คุณอย่างแน่นอนไม่ต้องการที่จะคลายพวกเขาในระหว่างการเล่นเกม. ต้องการให้คุณต้อง Mip แผนที่ได้อย่างไรMip แผนที่จะลดขนาดลงรุ่นเนื้อเก็บไว้ภายในเนื้อบีบอัด ตัวเอง ดังนั้นขึ้นอยู่กับวิธีห่างไกลคุณจะคัดลอกความละเอียดต่ำสามารถนำมาใช้ เห็นได้ชัดว่านี้ใช้หน่วยความจำมากขึ้นและเวลาการบีบอัดมากขึ้น คุณอาจไม่จำเป็นต้อง 'em สำหรับเกม 2D. -Conversely ... ... แทนที่จะใช้สไปรต์ยักษ์บนจอแสดงผล Retina ไม่และสไปรท์เล็ก ๆ บนจอแสดงผล Retina ก็อาจจะคุ้มค่าของคุณในขณะที่ทำให้รุ่นเล็กและขนาดใหญ่ของพื้นผิวและ ที่ใช้แต่ละตาม. -Read / เขียนพื้นผิวที่ใช้งานสร้างสำเนาที่สอง. สำเนาที่สองต้องการหน่วยความจำมากขึ้น ในกรณีส่วนใหญ่คุณก็สามารถออกจากนี้ปิด. -Tinting เทพดาจะทำลาย batching ... ... และสร้างสำเนาใหม่ของแหล่งที่มาของเนื้อในหน่วยความจำ ที่เป็นไปได้ควรหลีกเลี่ยงหรือพยายามที่จะเตรียมทำสีใด ๆ ที่คุณจะต้อง! เช่นถ้าตัวเลขของคุณทั้งหมดในแผ่นผีข้อความจะเป็นสีแดง .. ทำใน Photoshop. Loading, การออมและการเข้าถึงวัตถุ: ต้องการให้คุณจริงๆต้องสร้าง GUI ของคุณสำหรับแต่ละระดับ? คุณสามารถซ่อนมันและมีมันยังคงมีอยู่เมื่อ โหลดฉากที่แตกต่างกัน, การลดเวลาในการโหลด. -GameObject.Instantiate () ช้า! เทคนิคหนึ่งที่พบบ่อย (ซึ่งได้รับการพิสูจน์ความสำคัญอย่างยิ่งในการโยนรถบรรทุก) คือการสร้างสระว่ายน้ำของวัตถุในระหว่างการโหลด เช่น 4 ชนิดศัตรูแต่ละ เมื่อวัตถุไม่จำเป็นปิดการใช้งานและผลักมันกลับมาอยู่ในสระว่ายน้ำแทนการสร้างมัน ดังนั้นคุณจะมีฟังก์ชั่นตามสายของ MakePrefab ("เส้นทาง / เพื่อ / สำเร็จรูป"); ซึ่งจะเรียกเท่านั้น Resources.Load () ให้มีใครในสระว่ายน้ำ. -Resources.Load () แม้จะช้า! ฟังก์ชั่นนี้ไม่ได้แคชและเกี่ยวข้องกับการอ่านจากอุปกรณ์ HD หรือเทียบเท่า จะเป็นการดีที่คุณต้องการสระว่ายน้ำระบบไฮบริดถ้าคุณกำลังทำมากของการโหลด ขนถ่าย คือระบบสระว่ายน้ำมาตรฐานของคุณซึ่ง preloads วัตถุ แต่เมื่อฟังก์ชั่นอินสแตนซ์ที่เรียกว่าจะช่วยให้คัดลอกที่แตกต่างกันในรายการที่แตกต่างกัน เมื่อใดก็ตามที่เรียกว่าอินสแตนซ์และมีไม่เพียงพอในสระว่ายน้ำ แต่มีสำเนาในรายการอะไหล่จากอินสแตนซ์ที่มากกว่าการทำ Resources.Load สดอีกครั้ง นี่คือการกระทำสมดุลในการใช้หน่วยความจำและการใช้หน่วยประมวลผลเพื่อกำหนดเป้าหมายสำหรับอุปกรณ์ของคุณ. -GameObject.Find () และ GetCompoenent () .. ... จะช้า (คุณเห็นว่าหนึ่งมาใช่มั้ย?) หากคุณกำลังจะต้องใช้วัตถุหรือส่วนประกอบซ้ำ ๆ แล้วมันทำให้ความรู้สึกที่จะสร้างการอ้างอิงถึงในตัวแปรท้องถิ่นมากกว่ามองขึ้นซ้ำแล้วซ้ำอีก. ฟังก์ชั่น -Reflective สามารถเห็นได้ชัดช้า. สะท้อนความสามารถในการใช้ภาษา รหัสที่จะมองภายในตัวเองและได้รับชื่อวิธี ชนิด ขอบเขต ฯลฯ และอาจปรับเปลี่ยนพวกเขา คือการเรียกฟังก์ชั่นโดยใช้ชื่อสตริงหรือใช้ผู้ได้รับมอบหมาย พยายามที่จะหลีกเลี่ยงปัญหานี้ครับของพฤติกรรมเพื่อประสิทธิภาพ criti





































































































การแปล กรุณารอสักครู่..
ผลลัพธ์ (ไทย) 3:[สำเนา]
คัดลอก!
ฟิสิกส์ :
-
ใช้ฟิสิกส์ในตัว มันอาจจะดูเหมือนขยะรอบมีเครื่องยนต์ฟิสิกส์อย่างเต็มที่ 3D จะแสดงเป็นเกม 2D แต่หมีในใจว่า NVIDIA การเครื่องยนต์จะทำงานในความสามัคคีของเมืองหลัก เรากำลังพูดถึง Hyper - เครื่องยนต์ ดูแลโดยทีมงานมืออาชีพขนาดใหญ่และไม่ hobbyist 2D เครื่องยนต์ ตรึงตำแหน่ง X / Y Z และการหมุนที่ 2D รู้สึก

- ลองใช้ 1 / 1 ขนาด
โดยนี้ผมหมายถึง มาตรวัด 1 หน่วย = 1 คุณสามารถใช้ในขนาดใหญ่หรือเล็กระดับ แต่คุณมักจะพบความแปลกประหลาดบางอย่างเมื่อมันมาถึงการชน และความเร็วที่วัตถุตก จำไว้ แกรนด์เปียโน โดยไม่มีความต้านทานของอากาศจะลดลงอย่างรวดเร็วเป็นทารกที่ตาย แต่ถ้าทุกอย่างมีขนาดใหญ่ ก็จะดูเหมือนช้า คุณสามารถเล่นกับแรงโน้มถ่วง แต่อีกคุณกำลังเสี่ยง messing กับการชนกัน ฉันชอบที่จะใช้ 1 / 32 ขนาดเทียบกับสไปรท์กับกล้องขนาด 160 .

- รับวัตถุมวลที่ถูกต้อง
เหมือนกับขนาด ถ้าคุณมีแกรนด์เปียโนชั่ง 2gm หรือทารกตายชั่ง 500kg เหตุการณ์จะไม่อาจคาดเดาได้ พยายามให้มันมีเหตุผลว่า . .

- colliders ตาข่ายได้ช้าเมื่อเทียบกับแบบดั้งเดิม / กล่องทรงกลม colliders .
ในขณะที่วงอาจมีหลายมากขึ้นในกว่าพูดก้อน , ระยะทางที่สม่ำเสมอจากศูนย์จะทำให้มันง่ายที่จะคำนวณอย่างหนาแน่นกว่ามากของสามเหลี่ยมแต่ละ

-- คุณสามารถใช้รูปร่างที่ซับซ้อนมากขึ้น โดยการรวม colliders ดั้งเดิม
ถ้าคุณมีแม่กับวัตถุพูดก็คือกล่องและชิ้นส่วน rigidbody , คุณสามารถเพิ่มวัตถุเด็กที่มีเพียงกล่อง Collider .วัตถุทั้งหมดจะชนกันเหมือนส่วนหนึ่งของวัตถุที่เป็นของแข็ง

- ต่อเนื่องจากข้างบน . . . . . . .
แทนที่จะมีหลายเหล่านี้ถูกเชื่อมโยงเข้าด้วยกัน คุณสามารถเพิ่มวัตถุมากขึ้นกับเด็กและ rigidbodies colliders และใช้ข้อต่อที่เชื่อมต่อพวกเขาไปยังวัตถุที่แม่ . คุณสามารถสร้างสารรถตัวอย่าง กับพ่อแม่ของร่างกายเพื่อย้ายสิ่งทั้งหมด

- ข้อต่อพื้นฐานหลายจะไม่ได้รับการสนับสนุนในเกมวัตถุหนึ่ง . . . . . . .
. . . . . . . แต่หลายกำหนดข้อต่อ . แทนที่จะมีเครือข่ายร่วมกันวัตถุที่คุณสามารถยกตัวอย่างเช่นมีฤดูใบไม้ผลิและเลื่อนจากล้อกับเพลาตัดลงบนวัตถุแขวนลอยอยู่ระหว่างนั้น

- วัตถุกับ Collider แต่ไม่ rigidbody ถือว่าคงที่
ย้ายเหล่านี้มีราคาแพงดังนั้นถ้าคุณกำลังสร้างพวกเขาด้วยรหัสเพิ่ม Collider และฟิสิกส์วัสดุ ( กับ Collider ) หลังจากตำแหน่ง

-- ในขณะที่มันถือว่าปฏิบัติที่ดีเพื่อให้คุณแก้ซ้ำคงที่ . . . . . . .
. . . . . . . คุณอาจพบว่าเป็นประโยชน์ที่จะใช้เต็มจำนวนเท่านั้น ทุกวันที่ 2 ปรับปรุง เช่น 8,4,8,4,8,4 . ถ้านี้ช่วยบางส่วนของหน่วยประมวลผลโหลด Solver ตัวอย่างเช่นอาจไม่ต้องซ้ำข้าม ,และที่จริงจะให้แบบจำลองที่สอดคล้องกันมากขึ้น ฉันว่ามันคงจะง่ายเคาน์เตอร์

- ในขณะที่ใช้ในการทำไม rigidbodies เสียขวัญว่อน . . . . . . .
. . . . . . . ในบางกรณี คุณอาจพบว่า การเหล่านี้ และการลดการทำซ้ำโดยการแก้ให้ดีกว่านี้ ตาย

- ลดขนาดของคุณ !
หากคุณกำลังมองหาที่สมจริง 60fps และโทรศัพท์อยู่ตลอดเวลา ดิ้นรน คุณกำลังที่ดีที่สุดเพียงแค่ชำระสำหรับ framerate ต่ำและให้มันบางห้องพักหายใจ ฉันชอบที่จะใช้ 0.03 คงที่ขนาดได้สูงสุดประมาณ 0.05 อีกครั้ง , มันสามารถเล็กน้อยที่เคาน์เตอร์ที่ใช้งานง่ายลด timesteps ได้รับ framerates สูงกว่า แต่ลองดู

-
เวลาการ นี้จะช่วยให้ ,ขึ้นอยู่กับว่าเธอจะทำ มันก็เหมือนกับเวลาที่ผ่านไประหว่างแต่ละซ้ำ . การตั้งค่านี้สูงเกินไปจะเห็นได้ชัดว่ายุ่งกับการชนโดยเฉพาะอย่างยิ่งถ้าวัตถุ ได้เดินทางมาเป็นไมล์ในหนึ่งเฟรม มันไม่ตีเลย





ผม สไปรท์&พื้นผิวเครื่องยนต์ที่ใช้ระบบไฮบริดของเทพดาและ manager2 / ezgui ragespline สําหรับ sprites ,
การแปล กรุณารอสักครู่..
 
ภาษาอื่น ๆ
การสนับสนุนเครื่องมือแปลภาษา: กรีก, กันนาดา, กาลิเชียน, คลิงออน, คอร์สิกา, คาซัค, คาตาลัน, คินยารวันดา, คีร์กิซ, คุชราต, จอร์เจีย, จีน, จีนดั้งเดิม, ชวา, ชิเชวา, ซามัว, ซีบัวโน, ซุนดา, ซูลู, ญี่ปุ่น, ดัตช์, ตรวจหาภาษา, ตุรกี, ทมิฬ, ทาจิก, ทาทาร์, นอร์เวย์, บอสเนีย, บัลแกเรีย, บาสก์, ปัญจาป, ฝรั่งเศส, พาชตู, ฟริเชียน, ฟินแลนด์, ฟิลิปปินส์, ภาษาอินโดนีเซี, มองโกเลีย, มัลทีส, มาซีโดเนีย, มาราฐี, มาลากาซี, มาลายาลัม, มาเลย์, ม้ง, ยิดดิช, ยูเครน, รัสเซีย, ละติน, ลักเซมเบิร์ก, ลัตเวีย, ลาว, ลิทัวเนีย, สวาฮิลี, สวีเดน, สิงหล, สินธี, สเปน, สโลวัก, สโลวีเนีย, อังกฤษ, อัมฮาริก, อาร์เซอร์ไบจัน, อาร์เมเนีย, อาหรับ, อิกโบ, อิตาลี, อุยกูร์, อุสเบกิสถาน, อูรดู, ฮังการี, ฮัวซา, ฮาวาย, ฮินดี, ฮีบรู, เกลิกสกอต, เกาหลี, เขมร, เคิร์ด, เช็ก, เซอร์เบียน, เซโซโท, เดนมาร์ก, เตลูกู, เติร์กเมน, เนปาล, เบงกอล, เบลารุส, เปอร์เซีย, เมารี, เมียนมา (พม่า), เยอรมัน, เวลส์, เวียดนาม, เอสเปอแรนโต, เอสโทเนีย, เฮติครีโอล, แอฟริกา, แอลเบเนีย, โคซา, โครเอเชีย, โชนา, โซมาลี, โปรตุเกส, โปแลนด์, โยรูบา, โรมาเนีย, โอเดีย (โอริยา), ไทย, ไอซ์แลนด์, ไอร์แลนด์, การแปลภาษา.

Copyright ©2025 I Love Translation. All reserved.

E-mail: