Register    Login    Forum    Search    FAQ

Board index » General Programming




Post new topic Reply to topic  [ 1 post ] 
Author Message
 Post subject: [UDK]-Basic Scaleform (GfxMoviePlayer)
 Post Posted: Sat Feb 26, 2011 2:13 pm 
Offline
Site Admin

Joined: Sat Feb 19, 2011 1:33 am
Posts: 15
ตอนแรกผมเองก็ยังไม่รู้จัก Scaleform ว่ามันคืออะไร แต่เป็นเพราะ UDK ที่ทำให้ผมต้องไปศึกษาข้อมูลเพิ่มเติมมา
ก็เลยทำให้รู้ว่ามันยังมี Tools ที่ทรงพลังแบบนี้อยู่
เพราะมันเป็น GUI ที่เราสามารถทำ Animation ได้ง่ายๆด้วย Flash แถมยังแสดงผลให้ดูก่อนจะเอาไปใช้งานจริงอีกด้วย
ซึ่งมีความยืดหยุ่นมากกว่าการใช้งาน HUD โดยตรงซะอีก แต่ผู้ใช้งานจะต้องมีความรู้ในการใช้งาน Flash เบื้องต้นด้วย

รายละเอียดก็สามารถเข้าไปดูเว็บไซต์หลัก http://www.scaleform.com/

ในบทความนี้ผมจะกล่าวถึงการเรียกใช้ Object เบื้องต้น และการใช้งานตัวอย่าง โดยก่อนอืนเข้าไปอ่านคร่าวๆ
ได้ที่
http://udn.epicgames.com/Three/Scaleform.html // Start
http://forums.epicgames.com/showthread.php?t=743567 // รวม Tutorial
เพื่อเป็นการ ศึกษาการการทำงานเบื้องต้น รวมถึงติดตั้ง Plugin ให้กับ Flash ก่อน


- ----------------------------------------------------- ----
ขั้นตอนเบื้องต้นก่อนการใช้งาน Scaleform
1. ติดตั้ง Plugin Scaleform ให้กับ Flash ก่อน โดย ทำตามนี้
http://udn.epicgames.com/Three/Scaleform.html#Setting%20up%20Adobe%20Flash%20Environment
2. การสร้าง Movie ใน Flash มันจะมีข้อจำกัดบางอย่าง ที่จะไม่สามารถแสดงผลได้
เข้าไปดูที่ http://forums.epicgames.com/showthread.php?t=744676
แต่ถ้าใช้งาน Basic ก็ไม่ต้องซีเรียสมาก
3. เวลา Publish ไฟล์ SWF ต้องเลือกเป็น ActionScripts 2.0 เท่านั้น
4. ไฟล์ SWF ต้องถูกเก็บไว้ที่ โฟลเดอร์ UDKGame\Flash เท่านั้น แล้วจึงค่อย Import เข้า Package
5. อย่าลืม Embed Font ให้กับ Movie ของเราด้วย ไม่งั้นมันจะไม่สามารถแสดงผลตัวอักษรได้
6. ตั้ง Frame Rate ไว้ที่ 30 ด้วยนะ

เริ่มที่ Flash ก่อนละกัน
** หลังจากที่ลองใช้พวก Drawing ใน Flash เองแล้วแสดงผล ก็ดูเหมือนยังขาดความคมชัดพอสมควร
ก็เลยใช้วิธีการ Import Texture มาใช้ ซึ่งจะมีความคมชัดมากกว่า

สิ่งที่เราต้องรู้ในการทำงานใน Flash คืออะไร
1. Object ของ Flash ที่เราต้องการเรียกใช้งานใน UDK ต้องมีชื่อกำหนดด้วย Instance name เสมอ
โดยจะสามารถเรียกใช้ได้ผ่าน GetVariableObject("_root.ObjectName");
Image

2. Object จะถูกเรียกใช้แบบสืบทอดเสมอ
ตัวอย่าง

Symbol หลัก มี Instance name ชื่อ ALLInfo
และ ภายใน Symbol ประกอบด้วย Symbol Object อื่นๆ ที่มีชื่อ ActorHP และ ActorMP
ดังนั้นเวลาเราจะเรียกใช้งาน Object ActorHP หรือ ActorMP
จะเป็น
GetVariableObject("_root.ALLInfo.ActorHP");
GetVariableObject("_root.ALLInfo.ActorMP");

Image

3. ในกรณีที่มีการเขียน ActionScripts
ต้องมี Layer เฉพาะสำหรับ ActionScripts เพื่อติดต่อ UDK โดยต้องอยู่ ที่ Scene แรกสุด


4. Object หรือ Control ไหน ที่ต้องมีการแสดงผลเป็นตัวหนังสือต้องทำการ Embed Font เข้าไปด้วย
( หรือใช้ Global Font ก็ได้ วิธีทำดูได้ที่ http://www.youtube.com/watch?v=QP-MawV87Vc )
โดย Click ที่ Object แล้วเลือก Font หลังจากนั้นกดปุ่ม Embed แล้ว ก็อย่าลืมดูที่ Charactor Range
ด้วย ถ้าไม่อยากกำหนดเองก็เลือก ALL
Image

เบื้องต้นมีแค่นี้นะครับ นอกเหนือจากนี้ไปศึกษาเอาจาก Link ที่ให้ไปด้านบน

ต่อไปเรามาดูที่ UnrealScript

เริ่มต้นด้วยการสร้าง Class ที่ Extends มาจาก Class GFxMoviePlayer เอาไว้ก่อน
โดยภายในจะมี Basic Method ดังนี้

Code:
class DMGFXActorInfo extends GFxMoviePlayer;

DefaultProperties
{
   bDisplayWithHudOff = false; // จะใช้ Movie นี้เป็น HUD หลักรึเปล่า ในกรณีที่ HUD หลักไม่ทำงาน  ตั้งเป็น false ไว้ก่อน
   bEnableGammaCorrection = false;
   MovieInfo = SwfMovie'DMGUI.ActorInfo'; // Path ของไฟล์ SWF ของเรา ที่อยู่ใน Package
}

function Init(optional LocalPlayer player)
{
   super.Init(player);
   Start();
   Advance(0.0f);
}

function TickHUD()
{
   //  ------ TODO LOOP ------ //
}


เวลาเรียกใช้งาน เราจะ ใช้ Method ภายใน function PostBeginPlay()
โดยสามารถเอาไปใส่ไว้ใน Pawn , Controller หรือ Class อื่นๆ ขึ้นอยู่กับความสัมพันธ์ของ Code ที่เราเขียน

สมมุติเอาไปไว้ที่ Pawn Class
Code:
class DMMobPawn extends GamePawn config(ActionGame) placeable;

var DMGFXActorInfo  HudActorInfo; // ตัวแปรสำหรับ Scaleform Object.
simulated function PostBeginPlay()
{
   super.PostBeginPlay();
   if (HudActorInfo == none)
   {
      HudActorInfo = new class'DefendMaster.DMGFXActorInfo';//class ของ Scaleform ที่เรา สร้างขึ้น   
      HudActorInfo.Init(); // Initialize แบบปกติ
      //HudActorInfo.Init(class'Engine'.static.GetEngine().GamePlayers[HudActorInfo.LocalPlayerOwnerIndex]);
      //สามารถระบุแบบนี้ก็ได้
   }
}
//Tick ของ Pawn
simulated event Tick(float DeltaTime)
{
   super.Tick(DeltaTime);
   HudActorInfo.TickHUD(); // เรียก Function ของ Scaleform ในการประมวลผลลูป
}

//Function เพิ่มเติม
simulated event Destroyed()
{
   if (HudActorInfo != none)
   {
      HudActorInfo.Close(true);
      HudActorInfo = none;
   }
}



หลักๆจะมีแค่นี้ โดยที่ไม่จำเป็นต้องไปยุ่งกับ HUD เลยนะครับ
ในการแนะนำการใช้งานเบื้องต้นจะขอจบไว้เพียงเท่านี้ก่อนนะครับ


Top 
 Profile  
 
Display posts from previous:  Sort by  
 
Post new topic Reply to topic  [ 1 post ] 

Board index » General Programming


Who is online

Users browsing this forum: No registered users and 1 guest

 
 

 
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
cron