cocos2d 캐시 탱크 대상의 재사용

1631 단어 cocos2d

1. 간단한 서술 설명 풀


예를 들어 우리는 게임의 게임 유형이 멋지게 뛰고 게임 요소가 끊임없이 반복되는 것을 안다.게임의 내용은 화면 오른쪽에서 계속 생성되며, 심볼이 화면 왼쪽에 있으면 사라집니다.변하지 않는 new 대상을 가정합니다.release 대상 성능의 영향.어떻게 최적화합니까?캐시 탱크의 개념과 관련이 있다.
한 주인공이 한 경기장에서 끊임없이 몬스터를 죽인다.매번 다섯 명의 괴물이 나타나면 한 명을 죽이면 또 한 명이 나온다.
매번 몬스터가 나올 때마다 new 몬스터, 사망 몬스터는release 몬스터입니다.낭비할 거야.
이미 죽은 괴물, 우리가 간단하게 피를 채워주면 반복해서 사용할 수 있잖아!영화를 찍는 것처럼 한 사람은 진정으로 죽는 것이 아니라 단지 죽은 것처럼 보일 뿐이다.다시 사용할 수 있잖아!

2. 캐시 풀 단순화


우리는 사전에 new 10개의 몬스터를 하나의 그룹에 넣을 수 있다.간단하게 이 수조를 캐시 탱크라고 하는데, 사실상 하나의 수조이다.
int의 변수를 하나 더 만들어서 수조에서 몇 번째 몬스터를 표시하고 0으로 초기화하면 첫 번째 몬스터를 표시합니다.
1. 화면에서 새 몬스터를 만들려고 할 때 new가 아닌 int 변수로 그룹에서 몬스터를 가져와서 사용합니다.물론 가져와서 사용하면 간단하게 초기화해서 피를 채워줘야지.온전한 옷을 입는 등등.인트 변수를 1로 더하고 인트 변수가 그룹의 길이와 같다고 가정할 때.그것을 0으로 돌리다.
2. 한 괴물이 주인공에게 죽었을 때 이 괴물이 죽음 애니메이션을 방송한 후에remove를 한다. 그러나 그를 전혀release에서 떨어뜨리지 않는다.
하마터면 똑같이 실현될 뻔한 게 이거야, 간단하지!
초기 캐시 풀만 주의하십시오.new 대상의 수량입니다.일반적으로 네가 실제로 사용하는 수량보다 크다.

3. 단순 코드

// 
Vector
  
    
     
    bonePools;
void createBonePools(){
    
    if(bonePools.empty()){
        for(int i = 0; i < 30; ++i){
            auto oneBone = Bone::create();
            bonePools.pushBack(oneBone);
        }
    }
}
  
    
// 
int _boneIndex;
Bone* getOneBone(){
    if(_boneIndex == bonePools.size()){
        _boneIndex = 0;
    }
    Bone* result = bonePools.at(_boneIndex);
     result->reuseInit();// , 。 
    ++_boneIndex;
    return result;
}

cocos2d 캐시 탱크 대상의 재사용


판권 성명: 본 블로그의 오리지널 글, 블로그는 동의 없이 전재할 수 없습니다.

좋은 웹페이지 즐겨찾기