Apple Silicon MacでUnity + VSCodeの補完を有効にするための設定
M1 MacでUnityのセットアップをしていてVSCodeの補完設定についてメモ。
arm64版のHomebrewのみを使用している環境の話です。
基本的な設定は下記ポストを参考にさせて頂いて、 Monoのインストールだけpkgからインストールするようにすればうまくいきました。 qiita.com
Monoのインストール
今のところ(arm64版の)Homebrewからインストールすることができないようなので下記からpkgをダウンロードしてインストールする。
- [メモ]Monoのアンインストール方法
sudo rm -rf /Library/Frameworks/Mono.framework sudo pkgutil --forget com.xamarin.mono-MDK.pkg sudo rm /etc/paths.d/mono-commands
VSCodeの設定
settings.jsonに下記設定を追加する。
{ "omnisharp.useGlobalMono": "always", "omnisharp.monoPath": "/Library/Frameworks/Mono.framework/Versions/Current/Commands" }
Big Sur + Xcode 12.2にXcode Source Editor Extensionを認識させる方法
対処方法
XcodeKit.framework
を追加して、Embed & Sign
にする。
XcodeKit.frameworkは10.15用にビルドされているようなので必要ならDeployment Targetも見直す。
メモ
私の環境(Mac mini 2020 M1)ではこの対処で認識することを確認しました。 ビルドしないといけないのでApp Storeに公開されているものについては開発者の対応待ちになりそうです。
なお、Big SurのXcode 12.2でXcode Source Editor Extensionを新規作成してみると
XcodeKit.framework
は追加されていたものの、Do Not Embed
になっているので認識してくれません。
SlackからGitHub Deploymentsで投げたEnvironment / TaskをGitHub Actionsで参照する方法
SlackからGitHub Deploymentsで投げたEnvironment / TaskをGitHub Actionsで参照する方法を調べたのでメモ。 GitHub REST API v3で投げた場合も同じだと思います。
この画面で指定した値がGitHub Actionsのワークフローで取れるのでstagingとproductionで動作を変えたりできて便利。(Environment / Taskを規定値のドロップダウンリストにする方法があるか知りたい。)
- Environment
${{ github.event.deployment.environment }}
- Task
${{ github.event.deployment.task }}
UISceneを使ったアプリをSpotlightから開いた時に呼ばれるデリゲートメソッド
iOS 13から追加されたUISceneを使用していると、Spotlightで検索した結果からアプリを開いた時に呼ばれるデリゲートがUIApplicationDelegateからUISceneDelegateに変わります。
- iOS 13
import CoreSpotlight // UISceneDelegate func scene(_ scene: UIScene, continue userActivity: NSUserActivity) { switch userActivity.activityType { case CSSearchableItemActionType: print("ITEM SELECTED") case CSQueryContinuationActionType: if let searchQuery = userActivity.userInfo?[CSSearchQueryString] as? String { print("From Spotlight => \(searchQuery)") } default: break } }
- iOS 12以前
import CoreSpotlight // UIApplicationDelegate func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool { switch userActivity.activityType { case CSSearchableItemActionType: print("ITEM SELECTED") case CSQueryContinuationActionType: if let searchQuery = userActivity.userInfo?[CSSearchQueryString] as? String { print("From Spotlight => \(searchQuery)") } default: return false } return true }
その他でもUISceneDelegateが使われることになるのでSceneを使用する場合は要確認です。
参考
https://developer.apple.com/videos/play/wwdc2019/212
Migrating your codeで触れられてます。(PDF 50ページあたり)
Mac CatalystでUIAlertControllerをシートとして表示する
確認バージョン:Xcode 11.3
let alertController = UIAlertController(title: "Alert", message: "", preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in // handle })) present(alertController, animated: true, completion: nil)
カスタマイズできるもの
- タイトル
- メッセージ
- ボタン(複数追加可)
注意
textFieldを追加するとシートとして表示されなくなります。
let alertController = UIAlertController(title: "Alert", message: "", preferredStyle: .alert) alertController.addAction(UIAlertAction(title: "OK", style: .default, handler: { _ in // handle })) alertController.addTextField(configurationHandler: { _ in }) present(alertController, animated: true, completion: nil)
Mac Catalyst環境でUITextViewのフォーカスリングを消す
Mac Catalyst環境でのみコードを無効化・有効化する
#if !targetEnvironment(macCatalyst) // macOS環境で無効化するコード #endif
#if targetEnvironment(macCatalyst) // macOS環境で有効化するコード #endif