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 캐시 탱크 대상의 재사용
판권 성명: 본 블로그의 오리지널 글, 블로그는 동의 없이 전재할 수 없습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
초기 Swift에서 Cocos2D 초기화 코드 재구성판다 돼지·후페가 창작하거나 번역한 작품.전재를 환영합니다. 전재는 출처를 밝혀 주십시오.잘 못 썼다고 생각되면 의견을 많이 내주시고 괜찮다고 생각되면 좋아요를 많이 눌러주세요.감사합니다!hopy ;) 우리는 초기의...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.