วิธีโหลดรูปทั้งหมดจากโฟลเดอร์แบบไดนามิคขณะรันใน Unity by

30
Jun
0

ในการจะโหลดรูปทั้งโฟลเดอร์มาใส่ไว้ตัวแปร Sprite ใน Unity C# นั้น มีวิธีง่ายๆดังนี้ครับ

  • ขั้นแรก ห้ามพลาด รูปทั้งหมดถ้าจะใช้คำสั่ง Resources.Load หรือ Resources.LoadAll รูปทั้งหมดต้องอยู่ภายใต้โฟลเดอร์ Assets > Resources

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

Array ของ Sprite ที่โหลดมาทั้งหมด

Array ชื่อของ Sprite ที่โหลดมาทั้งหมด

Javascript: Event DOM loaded by

28
Feb
0

ปกติในการแทรก 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/