반응형

안녕하세요.

Dev.gom 입니다 ^^


올해들어 두번째이자 세번째 게임이 출시 되었습니다.


차기작을 생각하다가 원터치 게임들이 많은 사랑을 받기에 한번 도전해보고자하여 만들게 되었습니다.

다소 부족한 점이 보이시더라도 재미있게 플레이 부탁드립니다.


별점은 혼자하는 Dev.gom에게 큰 힘이 됩니다. !!


게임 제목: 클레이사격(Clay GunShot)

게임 형태: 원터치 아케이드 게임


[Google Play]

https://play.google.com/store/apps/details?id=com.devgom.ClayShooting


[App Store]

https://itunes.apple.com/us/app/clay-gunshot/id1367467865?l=ko&ls=1&mt=8


  

 


반응형
반응형

18년 4월 7일 Unity에서 IOS 빌드 시 다량의 오류가 발생.

분명 1월에 할때만 해도 안나오던 것인데... 발생한다.


그래서 해결하면서 겪었던 것을 바탕으로 작성한다.


해결 방법이 코코아팟을 설정하면서 해결했기에 함께 작성한다. (사담: 외국사람들은 먹을것으로 이름짓는걸 좋아하는데 구글도 그렇고..)


1. 유니티 빌드하기


> 유니티 -> IOS switch platform




> Google services 연동 했다면 Assets > Play Services Reslover > Ios Resolver > Install Cocoapods


> Builld > 폴더 지정 > 빌드완료 > podfile 생성 확인


2. CocoaPods 설정하기

여기가 매우 중요합니다. 여기를 설정 안하면 Librarie 관련 오류가 발생합니다.


> 터미널 오픈


> cd + 경로를입력해주세요 ( 폴더를 오픈하고 폴더를 드래그하면 경로가 자동으로 입력됩니다.) > 엔터

1
cd 
cs


> Cocoapods 인스톨 > password 입력 (이때 맥북 패스워드를 입력) / 화면에 입력되는게 안보이니 그냥 치시고 엔트

1
sudo gem install cocoapods 
cs


> 인스톨했으니 세덥합니다.

1
pod setup
cs


> Setup completd 출력 확인


> 1번에서 pod 인스톨하셨다면 podfile 이 있을 것이고 없다면 다음을 진행 있다면 건너 뛰세요


>podfile 생성

1
touch podfile

cs


> Podfile 열기 및 수정

1
open -e podfile

cs


>파일을 열어서 연결하고자하는 프로젝트를 연결합니다.

Firevbase , AdMob, GoolgePlayGames 등


명령어는 다음과 같습니다.


1
2
3
4
5
6
platform :ios, '8.0'
 
target 'Unity-iPhone' do
pod 'Google-Mobile-Ads-SDK', '~> 7.0'
pod 'GooglePlayGames'
end


>cs


위와 같이 입력하시고 command + s 눌러주세요.


예시 외에 다른 프로젝트연결이 필요하다면 cocoapod 사이트에서 확인할 수 있습니다.

사이트: https://cocoapods.org/


> 작성이 끝났으니 이제 이것을 적용해줍니다.

1
pod install
cs

>여기까지 완료하시면 해당 폴더에 pojectName.xcoworkspace 라는 파일이 생성됩니다.

> 기존에 .xcodepoj는 사용하지마시고 .xcoworkspace를 열어서 사용해주세요.

> 이후는 아이콘 및 Team 설정등을 해주시면됩니다.

> 혹시라도 bitcode 관련해서 에러가 발생한다면, 우측 unity-iphone 이라는 기존 프로젝트가 보입니다. 진한 파란색아이콘
이거 누르시고 빌드세팅 > 검색 > bitcode라고 치시고 값을 yes -> no로 수정하고 빌드합니다.

> 여기까지 xcode 및 cocoapods 를 사용한 빌드 순서 입니다.

> 그럼 성공하시고 좋은 앱 런칭해주세요

! 주의 사항
cocoapods 를 설정할 때는 xcode 파일을 모두 닫은 상태에서 진행해주세요.

! 제게 발생했던 오류

d: bitcode bundle could not be generated because ~ libGIPNSURL+FIFE.a error: linker command failed with exit code 1 (use -v to see invocation)

> 이것은 cocoapods를 다시 설정하시거나 하면 해결 됩니다.

> bitcode 값을 수정하시거나요


ld: library not found for -liPhone-lib

> 이것은 Build Phases > Link Binary with Libraries 에서 liphone - lib을 제거 후, 다시 잡아주시면 해결됩니다.



반응형

'개발이야기 > IOS - 설정 편' 카테고리의 다른 글

IOS 빌드 시 선택  (0) 2018.07.11
IOS 개발을 위한 등록  (0) 2018.02.05
XCode 세팅 처리 부분  (0) 2018.02.05
xcode 빌드 오류  (0) 2018.02.05
IOS IAP 동작안할때....  (0) 2018.02.05
반응형

Unity FLow는 개발하면서 인지하면서 해야하는 중요한 정보입니다.

다음은 Unity에서 설명하는 부분을 옮겨놓은 정보 입니다.



자동 메모리 관리 이해

이벤트 함수 실행 순서(Execution Order of Event Functions)

Unity 이벤트 함수는 사전에 정해진 순서대로 실행됩니다. 실행 순서는 다음과 같습니다.

에디터

  • Reset: 오브젝트에 처음 연결하거나 Reset 커맨드를 사용할 때 스크립트의 프로퍼티를 초기화하기 위해 Reset을 호출합니다.

첫 번째 씬 로드

다음 함수는 씬이 시작할 때(씬에서 오브젝트마다 한 번) 호출됩니다.

  • Awake: 이 함수는 항상 Start 함수 전에 호출되며 프리팹이 인스턴스화 된 직후에 호출됩니다. 게임 오브젝트가 시작하는 동안 비활성 상태인 경우 Awake 함수는 활성화될 때까지 호출되지 않습니다.
  • OnEnable: (오브젝트가 활성화된 경우에만): 오브젝트 활성화 직후 이 함수를 호출합니다. 레벨이 로드되거나 스크립트 컴포넌트를 포함한 게임 오브젝트가 인스턴스화될 때와 같이 MonoBehaviour를 생성할 때 이렇게 할 수 있습니다.
  • OnLevelWasLoaded: 이 함수는 세 레벨이 로드된 게임을 통지하기 위해 실행됩니다.

씬에 추가된 모든 오브젝트에 대해 Start, Update 등 이전에 호출된 모든 스크립트를 위한 Awake 및 OnEnable 함수가 호출됩니다. 원래 오브젝트가 게임플레이 도중 인스턴스화될 때 실행되지 않습니다.

첫 번째 프레임 업데이트 전에

  • Start: 스크립트 인스턴스가 활성화된 경우에만 첫 번째 프레임 업데이트 전에 호출됩니다.

씬에 추가된 모든 오브젝트에 대해 Update 등 이전에 호출된 모든 스크립트를 위한 Start 함수가 호출됩니다. 원래 오브젝트가 게임플레이 도중 인스턴스화될 때 실행되지 않습니다.

프레임 사이

  • OnApplicationPause: 이 함수는 일시 정지가 감지된 프레임의 끝, 실질적으로는 일반 프레임 업데이트 사이에 호출됩니다. 게임에 일시정지 상태를 가리키는 그래픽스를 표시하도록 OnApplicationPause 가 호출된 후에 한 프레임이 추가로 실행됩니다.

업데이트 순서

게임 로직, 상호작용, 애니메이션, 카메라 포지션의 트랙을 유지할 때, 사용 가능한 몇몇 다른 이벤트가 존재합니다. 일반적인 패턴은 Update 함수에 대부분의 작업을 수행하는 것이지만, 사용할 수 있는 다른 함수도 있습니다.

  • FixedUpdate: FixedUpdate 는 종종 Update 보다 더 자주 호출됩니다. 프레임 속도가 낮은 경우 프레임당 여러 번 호출될 수 있으며 프레임 속도가 높은 경우 프레임 사이에 호출되지 않을 수 있습니다. 모든 물리 계산 및 업데이트는 FixedUpdate 후 즉시 발생합니다. FixedUpdate 의 움직임 계산을 적용할 때 Time.deltaTime 만큼 값을 곱할 필요가 없습니다. FixedUpdate 가 프레임 속도와 관계없이 신뢰할 수있는 타이머에서 호출되기 때문입니다.

  • Update: Update 는 프레임당 한 번 호출됩니다. 프레임 업데이트를 위한 주요 작업 함수입니다.

  • LateUpdate: LateUpdate 는 Update 가 끝난 후 프레임당 한 번 호출됩니다. Update 에서 수행된 모든 계산은 LateUpdate 가 시작할 때 완료됩니다. LateUpdate 는 일반적으로 다음의 3인칭 카메라에 사용합니다. 캐릭터를 움직이고 Update 로 방향을 바꾸게 하는 경우 LateUpdate 에서 모든 카메라 움직임과 로테이션 계산을 수행할 수 있습니다. 이렇게 하면 카메라가 포지션을 추적하기 전에 캐릭터가 완전히 움직였는지 확인할 수 있습니다.

렌더링

  • OnPreCull: 카메라가 씬을 컬링하기 전에 호출됩니다. 컬링은 어떤 오브젝트를 카메라에 표시할지 결정합니다. OnPreCull은 컬링 발생 직전에 호출됩니다.
  • OnBecameVisible/OnBecameInvisible: 오브젝트가 카메라에 표시되거나/표시되지 않을 때 호출됩니다.
  • OnWillRenderObject: 오브젝트가 표시되면 각 카메라에 한 번 호출됩니다.
  • OnPreRender: 카메라가 씬 렌더링을 시작하기 전에 호출됩니다.
  • OnRenderObject: 모든 일반 씬 렌더링이 처리된 후 호출됩니다. 이 때 커스텀 지오메트리를 그리는 데에 GL 클래스 또는 Graphics.DrawMeshNow를 사용할 수 있습니다.
  • OnPostRender: 카메라가 씬 렌더링을 마친 후 호출됩니다.
  • OnRenderImage: Called after scene rendering is complete to allow post-processing of the image, see Post-processing Effects.
  • OnGUI: GUI 이벤트에 따라 프레임당 여러 번 호출됩니다. 레이아웃 및 리페인트 이벤트는 우선 처리되며 각 입력 이벤트에 대해 레이아웃 및 키보드/마우스 이벤트가 다음으로 처리됩니다.
  • OnDrawGizmos: 시각화 목적으로 씬 뷰에 기즈모를 그릴 때 사용됩니다.

코루틴

일반적인 코루틴 업데이트는 Update 함수가 반환된 후 실행됩니다. 코루틴은 주어진 YieldInstruction이 완료될 때까지 실행을 중단(양보)할 수 있는 함수입니다. 코루틴의 다른 사용법은 다음과 같습니다.

  • yield 코루틴은 모든 Update 함수가 다음 프레임에 호출된 후 계속됩니다.
  • yield WaitForSeconds 지정한 시간이 지난 후, 모든 Update 함수가 프레임에 호출된 후 계속됩니다.
  • yield WaitForFixedUpdate 모든 FixedUpdate가 모든 스크립트에 호출된 후 계속됩니다.
  • yield WWW WWW 다운로드가 완료된 후 계속됩니다.
  • yield StartCoroutine 코루틴을 연결하고 MyFunc 코루틴이 먼저 완료되기를 기다립니다.

오브젝트를 파괴할 때

  • OnDestroy: 오브젝트 존재의 마지막 프레임에 대해 모든 프레임 업데이트를 마친 후 이 함수가 호출됩니다. 오브젝트는 Object.Destroy 또는 씬 종료에 대한 응답으로 파괴될 수 있습니다.

종료 시

다음 함수는 씬의 활성화된 모든 오브젝트에서 호출됩니다.

  • OnApplicationQuit: 이 함수는 애플리케이션 종료 전 모든 게임 오브젝트에서 호출됩니다. 에디터에서 사용자가 플레이 모드를 중지할 때 호출됩니다.
  • OnDisable: 동작이 비활성화되거나 비활성 상태일 때 이 함수가 호출됩니다.

스크립트 수명 주기 플로우차트

다음 다이어그램은 스크립트의 수명 동안 이벤트 함수의 호출 순서에 대한 요약입니다.



반응형

'개발이야기 > Unity & C# 코딩' 카테고리의 다른 글

2단 점프 구현  (0) 2018.07.10
Unity Scene 정보 받아오기  (0) 2018.07.03
RayCast - layerMask 설정  (0) 2018.04.04
Unity Sound 옵션  (2) 2018.03.27
Raycast - CircleCast  (0) 2018.03.26

+ Recent posts