유니티 중급 이상 책

|

중급~고수 추천


유니티3 게임 프로젝트 마스터 세트

'보고싶은책' 카테고리의 다른 글

유니티 책  (0) 2013.12.11
유니티 서적  (0) 2013.12.11
유니티 중급 이상 책  (0) 2013.12.11
추천 책  (0) 2013.12.10
패턴  (0) 2013.12.10
만들면서 이해하는 실전! Cocos2d-x 3.x 게임 프로그래밍  (0) 2013.12.01
Trackback 0 And Comment 0

메모리 문제

|
출처 : http://devkorea.co.kr/bbs/board.php?bo_table=m03_qna&wr_id=32246&sca=&sfl=wr_subject||wr_content&stx=%EB%A9%94%EB%AA%A8%EB%A6%AC&sop=and&page=5&currentId=44


1. 사운드 출력의 문제

 - 동전을 먹는다던가 특정한 이펙트가 터졌을때 프레임이 끊기던 문제로 고생을 했었는데 알고 봤더니
 사운드 포맷 문제 였습니다. 잦은 이펙트 사운드는 wave로 바꾸고 스트리밍 방식말고 메모리 로드 방식으로 바꿨더니 해결 되었습니다.

2. 스크립트 문제

 보통 동전이 빙글 빙글 돈다던가 스케일 조절이 된다던가 하는걸 스크립트로 구현을 하게 되면

 개체수가 많을경우 엄청난 리소스를 필요로 하게 됩니다. 이런경우 스크립트로 처리 하지 마시고 그래픽 디자이너에게

 애니메이션으로 잡아 달라고 하시는게 프레임 향상에 도움 될겁니다.




기본적으로는

Update 류의 주기적으로 호출되는 함수에서
GameObject.Find 라던가 GetComponent가 잦으면 안됩니다.
미리 쓸거라면 항상 Awake나 Start에서 멤버변수로 만드시고...

물론 new Vector3 류의 객체할당도 마찬가지구요.
지역변수로 매번 값을 받아오는 부분을 고쳐보세요.
그리고 framePerSecond를 고칠 수 있는 api도 존재하니까 사용해서 줄이세요.
보통 러닝게임은 24나 30프레임이 적당합니다.(유니티 기본은 60이죠)

이런것들만 고쳐도 상당히 성능낭비가 감소됩니다.

'잡다한것들전부 > ' 카테고리의 다른 글

ngui 강좌 링크  (0) 2013.12.12
유니티 rpg 강좌  (0) 2013.12.11
메모리 문제  (0) 2013.12.11
게임 개발 공부 방법  (0) 2013.12.11
2d 게임 만들때 필수이 에셋  (0) 2013.12.11
유니티 2d rpg 개발  (0) 2013.12.11
Trackback 0 And Comment 0

배경 무한 스크롤링

|

#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"

using namespace cocos2d;
using namespace CocosDenshion;

CCScene* HelloWorld::scene()
{
    // 'scene' is an autorelease object
    CCScene *scene = CCScene::create();
   
    // 'layer' is an autorelease object
    HelloWorld *layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }

    /////////////////////////////
    // 2. add a menu item with "X" image, which is clicked to quit the program
    //    you may modify it.

    // add a "close" icon to exit the progress. it's an autorelease object
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "CloseNormal.png",
                                        "CloseSelected.png",
                                        this,
                                        menu_selector(HelloWorld::menuCloseCallback) );
    pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );

    // create menu, it's an autorelease object
    CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition( CCPointZero );
    this->addChild(pMenu, 1);
   
    CCSize winS = CCDirector::sharedDirector()->getWinSize();
   
   
    sprite1 = CCSprite::create("HelloWorld.png");
    this->addChild(sprite1);
    sprite1->setPosition(ccp(0, 0));
    sprite1->setAnchorPoint(ccp(0,0));
   
    sprite2 = CCSprite::create("HelloWorld.png");
    this->addChild(sprite2);
    sprite2->setPosition(ccp(winS.width/2, 0));
    sprite2->setAnchorPoint(ccp(0,0));
   
   
   
   
    backSpeed = ccp(-2,0);
   
   
    this->schedule(schedule_selector(HelloWorld::gameLogic));
    return true;
}

void HelloWorld::gameLogic(float dt)
{
    sprite1->setPositionX(sprite1->getPositionX()+backSpeed.x);
    sprite2->setPositionX(sprite2->getPositionX()+backSpeed.x);
    if(sprite1->getPositionX() < -sprite1->getContentSize().width)
    {
        CCSprite *tmp;
        tmp = sprite1;
        sprite1 = sprite2;
        sprite2 = tmp;
        sprite2->setPosition(ccp(sprite1->getPositionX()+sprite1->getContentSize().width, 0));
    }
   
}
void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    CCDirector::sharedDirector()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
}


CCAction사용하면 쉽게 할수있음

ParallaxNode 사용해도 쉽게 할수있음


'잡다한것들전부 > ' 카테고리의 다른 글

오비비 테스트 apk  (0) 2013.12.18
중급 개발자가 되는 방법 5가지  (0) 2013.12.16
배경 무한 스크롤링  (0) 2013.12.11
포물선 운동 관련 소스  (0) 2013.12.10
헥사 게임 알고리즘  (0) 2013.12.03
비쥬얼드 로직  (0) 2013.12.02
Trackback 0 And Comment 0