Archive for 1월 2016

[swift2] #available

 

if #available (iOS 9, OSX 10.10, watchOS 1, *){

// iOS9용 API 구문…

}else{

}

[iOS9]

간만에 UIWebView 를 써보려는데 요청해도 웹 내용이 안나와서 삽질중에..

ATS!

아! 그때 물어보셨던게 이거였구나…. 느끼고..

일단 자세한건 나중에… info.plist 에

<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>testdomain.com</key>
<dict>
<key>NSIncludesSubdomains</key>
<true/>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
<key>NSExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
<false/>
<key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
<true/>
<key>NSThirdPartyExceptionMinimumTLSVersion</key>
<string>TLSv1.2</string>
<key>NSRequiresCertificateTransparency</key>
<false/>
</dict>
</dict>
</dict>

뭐 이런식….

testdomain.com 에… 본인의 도메인 넣으면 끝!

똭!

[Swift2/Xcode7] func performOperation 구현할 때…

func performOperation(operation:Double->Double) {

        ifoperandStack.count >= 1 {

            displayValue = operation(operandStack.removeLast())

            enter()

        }

    }

스탠포드 대학의 swift 강좌를 보면서 다시 정리 하던 중에,

performOperation 메소드를 구현해야 하는 곳이 있었다.

강좌는 잘 진행 되던데… Swift2 / Xcode7 에서는

“Compiler error: Method with Objective-C selector conflicts with previous declaration with the same Objective-C selector”

에러가 발생했다.

헐… 당연 구글링을 하였으며, 거기에 답이 있었다.

http://stackoverflow.com/questions/29457720/compiler-error-method-with-objective-c-selector-conflicts-with-previous-declara

여기를 보면, 마지막에 명쾌한 답이 있다. 요약해 보자면 메소드 위에

@nonobjc

넣어 주면 된다. 끝… 이제 삽질의 답을 찾았으니, 강좌 계속 듣자.. ㅋㅋ 또 다른 삽질을 위하여…

[Unity5] 아이폰/안드로이드 기기올려보기 「簡単な2Dゲーム」 “2번째”

http://www.tegine.com/wordpress/?p=465

이글에 이어서 쓰는 내용입니다. (上のリンクの追加内容)

여기서 우선 미사일이 나오지 않았던 문제는…(弾丸…画像が黒画像は。。。)

스크린샷 2016-01-12 오전 1.27.44

유니티에서 안드로이드 기기 연결후 build & run 할때 셋팅 하는 부분의 Other Settings -> Preload Shaders 에 체크 표시가 꺼져 있는것을 위의 그림처럼 Check 해주면 해결된다. (이걸 몰랐으… ㅜ)

(build & runの設定する部分でOther Settings -> Preload Shaders のチェック→解決!なるほど〜〜

설정해 주면, 안드로이드 스튜디오나 이클립스 열것 없이 Unity5 가 바로 USB에 연결되어 있는 안드로이드 기기에 바로 올려준다.” (設定くれれば、Androidのスタジオや、Eclipseを 実行なくUnity5がすぐUSBに接続されているAndroid端末に直接上げてくれる。)

이 부분은 수정이 필요한게 조건이 붙는 것이다. C# 스크립트 코드에 에러가 없어야 바로 기기에 올라간다. 에러 시에는 apk 만들 경로를 물어 본다. (これは。。。C#スクリプトコードのエーラが無い場合。。。)

게임을 안드로이드 기기에서 Portrait 로 고정하고 싶은 경우에는 우측 설정 부분에서

스크린샷 2016-01-12 오전 1.27.17

이부분의 체크들을 해제해 주면 된다.

 

그리고 기초 과정 및 2D 게임 만들기에는 없었던 내용으로, 기기에 올라가면 키보드가 아니라 터치를 인식해서 Player 를 이동시켜야 하는데 그 부분 소스를 공개해 보겠다. 물론 손이 아닌 발로 짰기 때문에 정리는 필요하지만, 당장 필요한 분들은 이용해 주시기 바랍니당. ㅋㅋㅋ (나름 삽질의 결과 입니다. ㅠㅠ) 미세한 조정이 필요하긴 하지만 이동은 되더라고요…

(講義は後の検索を介して実装したコードです。)

Player.cs 에서 MoveControl() 메소드 부분을

void MoveControl ()
    {
        float horizontal = 0.0f;     //Used to store the horizontal move direction.
        float moveX;

        //****

        #if UNITY_EDITOR || UNITY_EDITOR_64 || UNITY_EDITOR_OSX

            horizontal = Input.GetAxis(Horizontal);

        #else

        if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved) {
        // Get movement of the finger since last frame
        Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition;
            if (touchDeltaPosition.x > gameObject.transform.position.x){
                horizontal = 1f;
            } else if(touchDeltaPosition.x < gameObject.transform.position.x) {
                horizontal = -1f;
            } else {
        horizontal = 0;
            }
        }

        #endif

        moveX = moveSpeed * Time.deltaTime * horizontal; // 프레임   리

        transform.Translate (moveX, 0, 0); // Z

        Vector3 viewPos = Camera.main.WorldToViewportPoint (transform.position);

        viewPos.x = Mathf.Clamp01 (viewPos.x);

        Vector3 worldPos = Camera.main.ViewportToWorldPoint (viewPos);

        transform.position = worldPos;

    }

이상입니다. ㅎㅎㅎ 잠 자야 겠어용. ㅋ

(ここからです。。。おやすみなさい。。。)

[Unity5] 아이폰/안드로이드 기기올려보기 「簡単な2Dゲーム」

Unity5에서 간단한 2D 슈팅게임을 따라서 만들어 보고, 맥용 앱으로 만들어 보았다.

Unity5で簡単2Dシューティングゲームをこのように作ってみて、Mac用のアプリで作ってみた。

내친김에 걍 빌드만 다시 올리면 되지… 하고 아이폰용을 올려보았다.

ついでにiPhone用でビルドした。

개발자 등록되어 있다면 (기기에 본인의 프로젝트를 올릴수 있다면) Xcode에서 프로젝트 불러온 뒤 빌드 하면, 아이폰 기기에서 돌아가는 것은 확인.

開発者登録されている場合は(機器の本人のプロジェクトを上げている場合)Xcodeでプロジェクト呼んで来た後、ビルドすると、iPhoneの機器で帰ることを確認。

안드로이드는, Bundle Identifier  를 설정해 달라고 한다. (Unity5 내부에서… 참고로 본인은 Unity 5.3.1f1 을 맥프레 2015에서 사용중)

Androidは、Bundle Identifierを設定することが必要になります。

(실은 빌드 올리는 중에 SDK 위치 물어보는데… 이건 뭐지? 하고 걍 꺼버린건 안자랑.. ㅜㅜ)

(実はビルド上げる中SDKの場所聞くけど…これは何?してそのまま取り出してしまったのなら…ㅜㅜ)

구글 검색해서

Google検索して

http://answers.unity3d.com/questions/162141/android-bundle-identifier-has-not-been-setup.html

요기를 발견.

このサイトを発見した。

설정해 주면, 안드로이드 스튜디오나 이클립스 열것 없이 Unity5 가 바로 USB에 연결되어 있는 안드로이드 기기에 바로 올려준다.

設定くれれば、Androidのスタジオや、Eclipseを 実行なくUnity5がすぐUSBに接続されているAndroid端末に直接上げてくれる。

우어….

これ。。ちょう〜いいな。。。

근데 슈팅게임인데 bullet 아니.. 걍 총알… 이미지가 검정 이미지로 대체되어 나온다. 아오… 이건 뭐지?

ところでシューティングゲームなのにbullet。。。そのまま弾丸…画像が黒画像に置き換えられてくる。なに〜これ?

android-bullet-issue

 

좀 더 알아봐야 겠다.

그리고 한 가지 더,,,,

そして、もう一つ,,,,

 

Unity5.3.1f1 64bit (맥용) 에서,

Unity5.3.1f1 64bit(Mac用)で、

Scene 전환할떄, 기존의  Application.LoadLevel (Game);   에서 LoadLevel에 중간삭선이 좌악 가져 있는 것을 확인했다.

Sceneの切り替え時に。。。既存のApplication.LoadLevel( “Game”);でLoadLevelが廃止??

구글링 해보니, http://answers.unity3d.com/questions/1113197/applicationloadlevel-obsolete-but-scenemanagerload.html

요기를 발견하였다.

 

グーグリングてみると、http://answers.unity3d.com/questions/1113197/applicationloadlevel-obsolete-but-scenemanagerload.html

発見した。

 

Application.LoadLevel is giving me crashes under Unity 5.3.1f1 (64-bit) so I suggest we all move to using the using UnityEngine.SceneManagement a.s.a.p.

이것을 보자면 나랑 같은 이슈를 겪은 사람이 있나보다. 빨리 이 문제에 대한 패치가 나왔으면 좋겠다.

아니면, 내가 잘 못 이용하고 있는 것인가? 하아…..

これ見ると私と同じ問題を経験した人がいるかよりも。早くこの問題に対するパッチが出てきたら良いだろう。

それとも、私にはよくない利用しているのだろうか?はぁ…..

 

Thanks for ibatstudio…

http://www.ibatstudio.com/unity5/

http://www.ibatstudio.com/u2dshoot/

 

=================

 

추가 내용

追加内容

씬 바뀐다… 얏호~~~

シーン変わる…やった。。

(왼쪽) 0. Canvas 밑의 Button 선택

(左)0. Canvasの下のButtonを選択

(오른쪽에서) 1. 스크립트를 추가 (여기서는 LogoManager.cs)를 드래그 해서 추가하였음.

(右から)1.スクリプトを追加(ここでLogoManager.cs)をドラッグして追加した。

2. 스크립트를 선택해서, OnClick 부분으로 Drag

2.スクリプトを選択して、OnClick部分的にDrag

3. 2까지 하면, BtnStart(버튼명) 이 입력됨. 이때 옆의 메소드 선택에서 구현한 씬 변경 메소드를 선택하면됨. 여기서는 ChangeToScene() 으로 하였음.

3.2まで すると、BtnStart(ボタン名)が入力される。この時、横のメソッドの選択で実装したシーンの変更メソッドを選択すれば良い。ここでは、ChangeToScene()にした

스크린샷 2016-01-08 오전 2.30.35

 

테스트 결과 Application.LoadLevel (Deprecated 예정) 이랑, 새로운 SceneManager,LoadScene 기법 모두 작동 되는 것 확인함.

テスト結果Application.LoadLevel(Deprecated予定)やら、新しいSceneManager、LoadSceneテクニックの両方で動作されることを確認する。

 

이상… 이제 잠을 자도 되겠군. ㅋㅋㅋ

以上…今寝てもされます。ふふふ。。。