วิธีโหลดรูปทั้งหมดจากโฟลเดอร์แบบไดนามิคขณะรันใน Unity by Ziah
Jun0
ในการจะโหลดรูปทั้งโฟลเดอร์มาใส่ไว้ตัวแปร Sprite ใน Unity C# นั้น มีวิธีง่ายๆดังนี้ครับ
- ขั้นแรก ห้ามพลาด รูปทั้งหมดถ้าจะใช้คำสั่ง Resources.Load หรือ Resources.LoadAll รูปทั้งหมดต้องอยู่ภายใต้โฟลเดอร์ Assets > Resources
- จากนั้นที่ Start() เราก็จะทำการโหลดรูปทั้งหมดมาใส่ Array ที่จะเก็บ Sprite (ในตัวอย่างจะใช้ Resources.LoadAll ซึ่งจะใช้ Resources.Load วนลูปชื่อไฟล์ทั้งหมดก็ได้)
public string race;
public string job;
public int form = 0;
public string gender;
private SpriteRenderer sr;
private Sprite[] sprites;
private string[] names;
void Start ()
{
sr = gameObject.GetComponent(); //เรียก GameObject คือตัวมันเอง
string assetPath = "unit_assets/"+race+job+((gender=="M"||gender=="F")?"_"+gender.ToLower():"")+((form>0)?"_"+form:"")+"/"; //ตั้งค่าโฟลเดอร์ที่มีรูปทั้งหมดที่ต้องการโหลดโดยต่อสตริงจากตัวแปรที่ได้มา (นับ Path จาก Resources ลงมา)
sprites = Resources.LoadAll(assetPath); //โหลดรูปทั้งหมดจากโฟลเดอร์มาใส่ Array ของ Sprite
names = new string[sprites.Length]; //นับจำนวนรูปทั้งหมดในโฟลเดอร์
for(int i = 0; i < names.Length; i++)
names[i] = sprites[i].name; //วนลูปเพื่อจำชื่อไฟล์ทำหมดไว้ในอีก Array
}
- เท่านี้รูปทั้งหมดก็จะมาอยู่ใน Array ในโค้ดเพื่อใช้ในการรัน Animation ต่อไปแล้วครับ ดาวน์โหลดโค้ดตัวอย่างที่นี่ครับ Click
Javascript: Event DOM loaded by plug.in
Feb0
ปกติในการแทรก Javascript ลงไปบนหน้า HTML เราจะมีรูปแบบการเรียก script ลงไปอยู่สองแบบคือ
- แบบแรก แทรกโค้ดลงไปใน tag script เลย โดย script จะถูกเรียกเมื่อ หน้านั้นถูกโหลดไปถึงบรรทัดนั้น
- แบบที่สอง เกิดขึ้นเนื่องจากแบบแรกจะมีปัญหาหากเราต้องเรียกใช้งาน Element บน HTML เช่น Div , Form ต่างๆ เนื่องจากบางส่วนอาจจะโหลดไม่เสร็จ
เราจึงต้องการแทรก Script หลังจากทุกอย่างในหน้าทำการโหลดเรียบร้อยแล้วด้วย
<body onload=”init()”>
หรือ prototype
Event.observe(window, ‘load’, init, false);
ดูเหมือนจะเรียบร้อยดี แต่แล้วก็มีปัญหาเพิ่มขึ้นมาคือ onload มันจะทำงานหลังจาก “ทุกอย่าง” ในหน้าโหลดเสร็จจริงๆ ซึ่งหมายถึงเราต้องรอโหลดรูป / css ทั้งหมดให้ครบก่อนถึงจะเริ่มใช้งาน
ทำให้เกิดปัญหาว่า เราไม่สามารถ run javascript ได้เลยถ้ารูปโหลดไม่เสร็จ ยิ่งเวปที่มี javascript เยอะ หรือเป็น Ajax ก็ยิ่งมีปัญหาหนักคือทำอะไรไม่ได้เลยจนกว่ารูปจะโหลดเสร็จหมด
วิธีการแก้ปัญหา หากใช้ Prototype Js อยู่แล้ว
document.observe(“dom:loaded”,init);
หรือถ้าไม่ได้ใช้ก็สามารถ load script มาใช้ได้ที่
http://www.brothercake.com/site/resources/scripts/domready/