Admin đã trở lại và lợi hại gấp đôi :D
Sun May 18, 2014 1:05 pm by admin_huyetsat
Sorry mọi người vì mình vắng mặt quá lâu, mình là HuyetSat, admin đây.
Hiện tại mình đã chuyển nền tảng phát triển game sang mobile (dùng libgdx framework) và cũng đang dev game và up lên play store, ai dùng đt android thì tải về ủng hộ ad nha:
play.google.com/store/apps/developer?id=Top+Game+Free
[img]…
[ Full reading ]
Hiện tại mình đã chuyển nền tảng phát triển game sang mobile (dùng libgdx framework) và cũng đang dev game và up lên play store, ai dùng đt android thì tải về ủng hộ ad nha:
play.google.com/store/apps/developer?id=Top+Game+Free
[img]…
[ Full reading ]
Comments: 1
Game4V và Event "Viết bài hay, nhận ngay quà tặng"
Mon Feb 20, 2012 11:18 pm by noheart91
Game4V là một trong những cộng đồng game thủ đầu tiên của Việt Nam với lịch sử hơn 5 năm hình thành và phát triển. Sau nhiều biến động, có thể nói hiện nay G4V là một cộng đồng game hoạt động hoàn toàn độc lập, không bị ảnh hưởng bởi tổ chức chuyên nghiệp nào với nền tảng máy chủ được trang bị từ …
[ Full reading ]
[ Full reading ]
Comments: 0
Mình sẽ tạm dừng hoạt động một thời gian
Fri Sep 02, 2011 7:19 am by HuyetSat
Vì lý do cá nhân nên tạm thời mình sẽ ko support xna trên các diễn đàn nữa.
Bạn nào gặp vấn đề về xna cứ mail trực tiếp cho mình.
thanh_vinh648@yahoo.com
Thân
Bạn nào gặp vấn đề về xna cứ mail trực tiếp cho mình.
thanh_vinh648@yahoo.com
Thân
Comments: 0
xin cho minh tham gia voi
Fri Apr 15, 2011 12:35 am by luongthanhbinh3824
Mình giỏi 3ds max có thể cho mình làm designer được không anh HuyetSat
Email: thanh_binh3824@yahoo.com
Phone: 0633703673
Email: thanh_binh3824@yahoo.com
Phone: 0633703673
Comments: 1
Latest topics
» Xin TUT game bắn trứng khủng longby anhkhoa2110 Mon Mar 16, 2015 4:29 pm
» xna getRGB texture image?
by bachdienquan Thu Feb 05, 2015 8:34 am
» Cần giúp đỡ về hiệu ứng hình ảnh khi va chạm
by phiemltv Fri Nov 28, 2014 12:20 pm
» Cho mình hỏi về boundbox
by septimus2810 Mon Jul 21, 2014 10:08 am
» Hỏi về cách di chuyển 1 điểm ở tọa độ này sang tọa độ khác cho trước.
by septimus2810 Mon Jul 21, 2014 10:02 am
» Admin đã trở lại và lợi hại gấp đôi :D
by konamij Fri Jun 27, 2014 2:50 pm
» lỗi An unhandled exception of type 'System.NullReferenceException'
by _VH_HV_ Mon Jun 16, 2014 1:59 pm
» networking cho game xna 2d
by admin_huyetsat Tue May 20, 2014 1:04 pm
» hướng dẫn traning C# chuẩn bị cho xna
by lqchinh Tue Apr 15, 2014 11:31 pm
» HelpGameBom2D
by thaimavn Mon Mar 24, 2014 10:35 am
» Hỏi về cách di chuyển 1 điểm ở tọa độ này sang tọa độ khác cho trước.
by bocapzz Mon Feb 24, 2014 10:45 pm
» Hỏi về cài đặt XNA game studio 4.0
by bocapzz Sat Dec 14, 2013 12:33 am
» Cuộc thi lập trình game thế giới 2013 với cơ hội thăm quan Phần Lan
by viope Tue Oct 29, 2013 4:51 pm
» chơi game làm bởi xna như thế nào?
by thinnhph01957 Sat Sep 14, 2013 3:23 pm
» Với 1 Game cái gì là quan trọng ?
by qhhqnavy Tue Aug 13, 2013 8:09 am
» Load fiel .fbx vào Xna bị mất màu
by qhhqnavy Wed Aug 07, 2013 7:42 pm
» Help me hàm Update và Draw với
by sieuthi Mon Dec 24, 2012 11:56 pm
» Hỏi về load hình chồng nhau trong XNA
by sieuthi Mon Dec 24, 2012 11:49 pm
» nơi ghi danh tham gia Game Development Team
by echdonghop Fri Dec 21, 2012 1:56 pm
» tài liệu cơ bản 5 chương cho xna
by Nelson Quang Thu Nov 22, 2012 12:26 pm
Create Scene for XNA
Trang 1 trong tổng số 1 trang
Create Scene for XNA
3.Tạo nhiều màn trong game
Có 2 cách để tạo màn trong game
Cách 1: dùng biến kiểu enum như sau:
Cách 2
Bạn tạo ra 1 lớp mới thuôc loại DrawableGameCompoment, gọi là GameScene, có thể đánh dấu nó là abtract cũng đc. Vì chúng ta sẽ tạo ra những class khác nhau cho những màn khác nhau dựa trên sự thừa kế từ GameScene
Ban tạo những method sau:
Show() : Enable và Visiable của scêne là true, khi đó màn chơi sẽ đc hiển thị (đc update và draw ở game chính)
Hide() : ngược với Show(), dùng khi bạn muốn qua màn khác
GameScene ko có mảng Compoments như của Game chính, dó đó bạn có thể tạo mảng này (mảng chứa các gameCompoment khác trong màn, VD như là menu ở màn start, Player và Enemy ở màn Action)
Compoments của GameScene cũng hoạt động giống như ở game chính vậy, do đó ở Update và Draw method, bạn lần lượt Update và Draw cho mỗi object (kế thừa từ GameCômpoment) có các thuộc tính Enable và Vísiable là true như sau:
#region Using Statements
using System.Collections.Generic;
using Microsoft.Xna.Framework;
#endregion
Cách1 đơn giản hơn rất nhiều đúng ko? Nhưng chỉ là với sl màn it thôi, màn nhiều thì switch mệt nghỉ! Cách 2 thì phức tạp hơn nhưng tiện ở chỗ các compoments sẽ tự nó Update và Draw, nếu game có nhiều nhân vật (VD: 100 Enemy khác nhau) thì cũng tiết kiệm đc thời gian code đáng kể đấy! nếu dùng cách 2 khi chuyển màn trong game chính , bạn dùng method sau để chuyển màn:
Có 2 cách để tạo màn trong game
Cách 1: dùng biến kiểu enum như sau:
- Code:
enum State = {
Start = 0,
Play,
Won,
Lost
}
- Code:
switch (State)
{
case GameState.Loading:
//các method do người dùng định nghĩa
DrawSplashScreen();
break;
case GameState.Running:
//các method do người dùng định nghĩa
DrawGameplayScreen();
break;
case GameState.Won:
//các method do người dùng định nghĩa
DrawWinOrLossScreen(GameConstants.StrGameWon);
break;
case GameState.Lost:
//các method do người dùng định nghĩa
DrawWinOrLossScreen(GameConstants.StrGameLost);
break;
};
Cách 2
Bạn tạo ra 1 lớp mới thuôc loại DrawableGameCompoment, gọi là GameScene, có thể đánh dấu nó là abtract cũng đc. Vì chúng ta sẽ tạo ra những class khác nhau cho những màn khác nhau dựa trên sự thừa kế từ GameScene
Ban tạo những method sau:
Show() : Enable và Visiable của scêne là true, khi đó màn chơi sẽ đc hiển thị (đc update và draw ở game chính)
Hide() : ngược với Show(), dùng khi bạn muốn qua màn khác
GameScene ko có mảng Compoments như của Game chính, dó đó bạn có thể tạo mảng này (mảng chứa các gameCompoment khác trong màn, VD như là menu ở màn start, Player và Enemy ở màn Action)
Compoments của GameScene cũng hoạt động giống như ở game chính vậy, do đó ở Update và Draw method, bạn lần lượt Update và Draw cho mỗi object (kế thừa từ GameCômpoment) có các thuộc tính Enable và Vísiable là true như sau:
- Code:
public override void Update(GameTime gameTime)
{
// Update the child GameComponents
for (int i = 0; i < components.Count; i++)
{
if (components[i].Enabled)
{
components[i].Update(gameTime);
}
}
base.Update(gameTime);
}
/// <summary>
/// Allows the game component draw your content in game screen
/// </summary>
public override void Draw(GameTime gameTime)
{
// Draw the child GameComponents (if drawable)
for (int i = 0; i < components.Count; i++)
{
GameComponent gc = components[i];
if ((gc is DrawableGameComponent) &&
((DrawableGameComponent) gc).Visible)
{
((DrawableGameComponent) gc).Draw(gameTime);
}
}
base.Draw(gameTime);
}
#region Using Statements
using System.Collections.Generic;
using Microsoft.Xna.Framework;
#endregion
- Code:
namespace game
{
/// <summary>
/// This is the base class for all game scenes.
/// </summary>
public abstract class GameScene : DrawableGameComponent
{
/// <summary>
/// List of child GameComponents
/// </summary>
private readonly List<GameComponent> components;
public GameScene(Game game)
: base(game)
{
components = new List<GameComponent>();
Visible = false;
Enabled = false;
}
/// <summary>
/// Show the scene
/// </summary>
public virtual void Show()
{
Visible = true;
Enabled = true;
}
/// <summary>
/// Hide the scene
/// </summary>
public virtual void Hide()
{
Visible = false;
Enabled = false;
}
/// <summary>
/// Components of Game Scene
/// </summary>
public List<GameComponent> Components
{
get { return components; }
}
/// <summary>
/// Allows the game component to update itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
public override void Update(GameTime gameTime)
{
// Update the child GameComponents
for (int i = 0; i < components.Count; i++)
{
if (components[i].Enabled)
{
components[i].Update(gameTime);
}
}
base.Update(gameTime);
}
/// <summary>
/// Allows the game component draw your content in game screen
/// </summary>
public override void Draw(GameTime gameTime)
{
// Draw the child GameComponents (if drawable)
for (int i = 0; i < components.Count; i++)
{
GameComponent gc = components[i];
if ((gc is DrawableGameComponent) &&
((DrawableGameComponent) gc).Visible)
{
((DrawableGameComponent) gc).Draw(gameTime);
}
}
base.Draw(gameTime);
}
}
}
Cách1 đơn giản hơn rất nhiều đúng ko? Nhưng chỉ là với sl màn it thôi, màn nhiều thì switch mệt nghỉ! Cách 2 thì phức tạp hơn nhưng tiện ở chỗ các compoments sẽ tự nó Update và Draw, nếu game có nhiều nhân vật (VD: 100 Enemy khác nhau) thì cũng tiết kiệm đc thời gian code đáng kể đấy! nếu dùng cách 2 khi chuyển màn trong game chính , bạn dùng method sau để chuyển màn:
- Code:
activeScene = anyScene;
protected void ShowScene(GameScene scene)
{
activeScene.Hide();
activeScene = scene;
scene.Show();
}
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết