하나의 프로젝트에서 여러개의 플랫폼용으로 빌드 할 때, 아래 코드를 잘 조합해서 하면 하나의 소스로 여러개의 플렛폼으로 빌드를 할 수 있다. 


간단하게 설명.

1. workspace를 만든다. 

2. cocos2d iOS Project를 만든다. Add to, Group(처음 생성하는 프로젝트면 없을 수도 있다) 위치를 workspace root로 정한다. 



3. cocos2d Mac Project를 만든다. Add to, Group 위치를 workspace root로 정한다.  

4. 하나의 프로젝트에서 소스를 생성하고 다른 프로젝트로 옮길 때는 Project > Target > Build Phases > Compile Sources > + > Add Other ... > 원하는 소스코드 추가

(그냥 드래그 앤 드롭으로 하면 에러 남)

5. 소스 코드 외 컴파일 되지 않는 파일은 그냥 드래그 앤 드롭으로 하면 된다. copy는 하지 말고. 


그리고 소스 내부에는 아래 코드를 참조해서 apportable 용, iOS용, Mac 용을 구분해서 구현하면 된다. 


#ifdef ANDROID

#elif defined(__CC_PLATFORM_IOS)

#elif defined(__CC_PLATFORM_MAC)

#endif


저작자 표시 비영리
신고
Posted by KraZYeom

* 그냥 급하게 지원하게 코드만 수정한 버전입니다. 공식 버전에서 곧 지원될때 까지만 사용 바랍니다. 전체 코드를 몰라서 그냥 후다닥  지원 가능하게만 했은 성능상에 문제가 있을 수도 있습니다. 


어쩌다 보니 제 코드를 pull request 했더니 merge 되었네요. 

https://github.com/cocos2d/cocos2d-iphone/commit/1caaec05b967160c342fa92a9033909ab11f6edb


v3 rc2에서는 풀스크린을 하면 전체 확대가 안되었습니다. 이런 문제를 rc3에서 해결했는데 이것 때문에 다른 버그가 생겨버렸습니다.

cocos2d v3 rc 3에서 레니타 맥에 대한 패치가 있었는데요. 풀스크린상에는 문제가 없는데 작은 화면상에서는 화면이 2배 확대되어 나오는 버그가 발생합니다. 


CCDirector.m에서 아래와 같이 변경하면 됩니다.

-(void) setView:(CCGLView*)view{

...

{ // set size

CGSize size = CCNSSizeToCGSize(__view.bounds.size);

#ifdef __CC_PLATFORM_IOS

CGFloat scale = __view.layer.contentsScale ?: 1.0;

#else

self.view.wantsBestResolutionOpenGLSurface = YES// 이 부분 주석을 풀어줘야 함

CGFloat scale = self.view.window.backingScaleFactor;

#endif


CCDirectorMac.m에서 아래와 같이 추가하면 됩니다. 

- (void) setFullScreen:(BOOL)fullscreen {

...

    if( fullscreen ) {

...
        self.view.wantsBestResolutionOpenGLSurface = NO;

    } else {

...

       self.view.wantsBestResolutionOpenGLSurface = YES;

    }

...
}



저작자 표시 비영리
신고
Posted by KraZYeom