スマートフォン用の表示で見るつくるの大好き。つくるのが大好きな人の記録。この広告は、90日以上更新していないブログに表示しています。DevelopmentUnityのネイティブプラグインを開発していると、Unityで実行中にプラグイン内部のコードや変数の状態をデバッグしたくなる時がよくありますよね。これは簡単な手順で行うことができるので手順を書いておきます。デバッグ実行できる条件ネイティブプラグインのソースコードを持っていてビルド可能なことDebugビルドができて、pdbファイルを出力可能なことつまり自作プラグインやオープンソースのものであればデバッグ可能です。.dllファイルだけ提供されているようなプラグインはデバッグできないということです。デバッグ実行するための手順ネイティブプラグインをDebugビルドするDebug構成でプラグインをビルドします。.pdbファイルが出力されます。.pdbファイルをUnity内のPluginsフォルダに配置します。[デバッグ]-[プロセスにアタッチ]メニューを選択します。"プロセスにアタッチ"ダイアログが表示されるのでUnityのプロセスを選択して[アタッチ]します。プロセスはたくさん列挙されますが"unity"で絞り込めば見つけやすいです。ブレークポイントの設定を行うステップ実行したい部分にブレークポイントを設定しましょう。UnityでPlayするこの状態でUnityでPlayすると、なんということでしょう。プラグイン側のソースコード上のブレークポイントが効きましたね。普通にステップ実行ができますし、変数の内容もウォッチすることができます。.pdbファイルのバージョンが一致していないことが原因として考えられます。再ビルドとUnityへのファイル更新を再度行ったり、Unityの再起動を行ってみてください。Reality分野が引き続き主な活動領域です。2019年度も引き続きこの指針で活動してゆこうと思っています。2も出てくるので楽しい1年になりそうです。子どももやんちゃ盛りでなかなかまとまった活動時間は取れませんが、それはそれ。その中での気づきやソリューションにきっと出会えるはず。できる範囲でまた楽しくがんばります。Kipmanがこの日本にやってきてくれました。ぼくたちHoloLensコミュニティのために特別に直接面会する機会を設けてくれ、なんとHoloLensにサインを頂いてしまいました!サインを頂いたら保護しましょうこの貴重なサイン、できるだけ綺麗な状態を保ちたいですよね。手が良く触れる場所なのでぜひ保護塗装をしましょう。塗装面は綺麗に塗装面が油等で汚れていると塗料の乗りが悪くなりますので、乾いた布やティッシュ等で綺麗にしましょう。マスキングマスキングテープを使ってキッチリとマスキングを行います。ふちが浮かないように気を付けましょう。塗料がグラス面やHoloLens内部に入り込まないように塗装面を除き、全体をカバーします。今回はちょうどde:code2019の紙袋があったので使ってみました。吹くスプレーは思い切って一気にムラなく塗ることが大切です。弱気でもムラになりますし、強気すぎるとタレが発生するので気を付けましょう。スプレー缶はよく振って、練習で試し吹きして感じを掴みましょう。乾燥!乾燥!乾燥!乾燥はとても大切な工程です。塗装が済んだら触らずじっくりと乾燥させましょう。この時空気が湿っていると時間がかかりますし気泡が発生しやすいので、そもそも塗装作業は好天が続く空気の乾燥した時に行うのがおすすめです。乾燥させたらマスキングを取りましょう!はい!ちょっと乱暴にマスキングを取ってしまったので見事に左上の塗膜がはがれてしましましたー!!乾燥時間を1日しかとらなかったのも敗因かもしれませんwというわけでじっくり乾燥させる事と慎重なマスキングはがしは本当に大切です。皆さん気を付けましょう(笑)なお、すこしふちがけば立っていますが、しばらくするとなじんだり削れたりして目立たなくなってゆきます。KipmanダブルサインのHoloLensの保全作業が完了です。朝礼XRはじめに持ち回りで朝礼でありがたいお話をすることになっているので、明日の話をつくりました。社内向けの構成ですがせっかくなので公開しておきます。https://neutrans.space/VR空間で協働できるサービスご近所五反田のSynamonさんがやってる。https://twitter.com/kohack_v/status/958213238545526784VR空間で仕事してる坪倉さんにリアルアバターで会いに行ってみました。https://twitter.com/holoadventure/status/1082563304768163840故人の生前のデータをもとに再会こんにちわ赤ちゃんノマドhttp://satoshi-maemoto.hatenablog.com/entry/2017/12/23/122813いつでも誕生の瞬間に駆けつけられるように広島県内2か月にわたる海と山、ネットカフェから奥さんの実家にまたがるフルノマドに挑戦。Development今日Twitter上でちょっと話題が出たUnityプロジェクト間でのソース共有について今運用している方法を書きます。Unityアプリのソース管理ってどうしてますか?サブモジュール的な共通機能をどうやって管理してるのかわからん。2019Unityプロジェクト間でのソース共有でよくあるのが下記パターンかなと思います。共有する方のUnityプロジェクトSharedLibと共有される方のUnityプロジェクトAppがあるとします。それぞれは別のGitリポジトリに保存されているとします。するとSharedLibのProjectSettings等もpullしてしまうのでおかしなことになります。有効にし、指定フォルダ名を設定ファイルに書き込んだあとpullします。この一連の処理は開発メンバー1人1人がローカルで行う必要があるので、下記のようなバッチファイルを作って共有しました。HEADこうすると必要なファイルだけpullすることができるようになります。submoduleというのはリポジトリのあるcommitに対してリンクを貼るものなので、SharedLibリポジトリにその後入った変更が自動的にAppリポジトリに反映されることはありません。最新版に同期したいときは下記のコマンドを利用します。これも開発メンバーが個々にローカルで行う必要があるのでバッチファイルにして配布しています。masterこのバッチを走らせてね~!っていう通達は人力なので「勝手にやらない」「やるときはみんなやる」っていうのを気を付けないといけないといえばいけないですが、勝手にしても自分にビルドエラーが出るくらいの軽傷で済むのではないでしょうか。ちなみにバッチファイルはAppリポジトリに含めることで配布し、README.mdに説明を書いておきました。便利なバッチファイルを作りました。submoduleを追加します。1度だけ使ってください。最新のFrameworkに更新します。行う方法を書きました。今のところ無事故でうまくいっているのでよかったら参考にしてください。Unity2018年もいよいよ終わりが近づきました。本年も大変お世話になりました!今は来年引き続きのことで気は忙しいけど軽くまとめておこうと思います。手がけたこと某Android向けSDK開発AndroidでC++とUnityなもの。設計能力と実装能力とチームマネジメント能力が大いに鍛えられましたw今年の大半はこれをやっていました。DAY」のAR連動はテンションが上がりました。日本中のものすごくたくさんの家庭に番組の進行と同期してアーティストがお邪魔しました。今年は若干自分のチームが大きくなりました。するとマネジメントっていうタスクがどうしても出てくるわけですが、自分の働き方の基本コンセプトとして下記を死守するために色々と効率を上げる工夫をしました。18:00には家に帰って子どもをお風呂に入れる興味のあることだけやりたいw仕事時間の50%以上は開発をする(営業・マネジメント系に費やす時間を限りなくゼロに近づけたい)チームの目標設定チームの一人一人に指示をするのは大変なので自分で考えて動けるようにチームの大きな目標を掲げました。方向性に迷ったらそれを見て進むべき道を考えてねっていう感じなればマネジメント不要に近づけそう。そのドキュメントのURLをSlackのトピックに設定しいつでも参照できるようにしました。ちなみにチームの目標はこれらです。新しく入ってきた人に同じことを説明する時間を節約するためにぼくたちはどんな流れで仕事を継続的にしているかと、だれがどこをカバーしているかを可視化した資料をつくりました。青字はメンバーのイニシャル。マッピングが多いほど望ましいwそのうちマッピング数、各タスクでの活躍を評価なんかにもしてゆきたい感はあるけどまあおいおいですねw要は時間ができたらこれを見て、次の動きを自分を拡張できる方向で考えて動いてねっていう意図で書きました。これもSlackのトピックから常時アクセス可能になっています。進捗どうですか?って聞いて回るだけでたくさんの時間を浪費してしまいますよね。そこで平日の毎朝始業時間にチーム全員に今日やることを聞いてくれるbotをSlackに仕込みました。大事なのは「今日やったこと」ではなく「今日これからやること」がイメージできているかという点だと思っているので未来のことを聞きます。記入には1人1分もかかってないかなと思います。ぼくの内容確認が1人1秒~5秒。問題なければOKスタンプをつけるだけで終了です。方向性の調整や追加のお願いが必要だなと思ったらコメントで会話して手を付ける前に調整をお願いします。ぼくは9:00には大抵会社にいないので電車の中でこれらが完了していることも大きなポイントかなと思っています。日々だいたいのことが把握できているのでグループでのMTGは1週間に1回、10分以内で終わる感じです。これらが功を奏しているのか、チームとしても社内でほとんど残業はしないけど最もパフォーマンスの高い存在になれているんじゃないかな。まとめこんな感じで楽しく生きるための工夫を考えて試行してみるのは楽しいなと気づいた今年でもありましたw来年も楽しくしたいな~。C++Unity2018.3.0f2が正式版として落ちてきましたので早速HoloLensアプリのビルドを試してみました。UWPプロジェクトを書き出すわけですが、VSでビルド設定をReleaseに変更しようとした際に見慣れぬ設定があることに気づきました。Unityのリリースノートを調べると2018.3.0b9から導入されたもののようです。「リンク時コード生成」の略ということがわかりました。LTCGとはなんぞやということはこちらに書かれていました。意外と古くからある機能なのですね。Docsこちらはオフィシャルなリファレンス。ビルド設定とはこのLTCGが有効とされるビルドということになります。Language)からC++コードに変換されているわけですが、Masterビルドでのビルドプロセスは下記となります。コンパイラ:各cppファイルがobjファイルに変換される。この時コードオプティマイズも行われるリンカ:各objをマージしてexeファイルとするこれがMasterWithLTCGビルドでは下記になります。コンパイラ:各cppファイルがobjファイルに変換される。この時コードオプティマイズも行われるリンカ:各obj間の関数呼び出しをインライン化する等のオプティマイズを行う。リンカ:各objをマージしてexeファイルとするなのでMasterWithLTCGビルドの方がリンク時間が長くなるはずです。実際に計測してみました。milliseconds.コンパイル時間が短くなっているのは謎ですがリンク時間は10倍程度長くなっていますので色々頑張っている様子が伺えます。生成されたDLLファイルのサイズは下記の通り。単純には言えませんがインライン展開によってマシン語レベルでコードが増えた結果かもしれません。ビルド設定の効能について書きました。今回は比較的シンプルなアプリケーションでテストしたため実際に高速化の恩恵を体験することはできていないのですが、最終リリースをこの設定でビルドして少しでも高速化しておくことは意味がありそうだと思いました。調査の経緯はこちらのツイートにもスレッド化されています。(MasterWithLTCGビルド)Tweet広告を非表示にするもっと読むコメントを書く次のページプロフィールid:peugeot-106-s16つくるのが大好きな人の記録。月別アーカイブ参加グループプログラミングつくるの大好き。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。