質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

解決済

1回答

1709閲覧

Unity:UWPの開発でWindows RuniTme APIを使いたい

otaaa

総合スコア19

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

UWP

UWPは、Universal Windows Platformの略。様々なデバイス向けに提供されているアプリケーションを共通のフレームワーク上で動作可能にする仕組みで、Windows10で導入されました。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2021/07/20 16:03

編集2021/07/21 02:34

前提・実現したいこと

univeral windows platformの開発でwindows runtime APIを使いたいと思っています。

試したこと

・Player設定(Edit > Project Settings > Player)でApi Compatibility Level を .NET Standard 2.0 に設定する
・ターゲットのプラットフォームをuniversal windows platformに変更する
・Unity 2021.1.15、2020.3.14f1、 2018.4.36f1で上記のことを試す。

test.cs

1#define ENABLE_WINMD_SUPPORT 2using UnityEngine; 3using System.Collections; 4 5 6public class test : MonoBehaviour 7{ 8 9 void Start() 10 { 11 12 13 14 15#if ENABLE_WINMD_SUPPORT 16 return Windows.System.UserProfile.AdvertisingManager.AdvertisingId; 17#endif 18 19 } 20}

発生している問題・エラーメッセージ

以下のサイトを参考に試したのですが、Windows.System.UserProfile.AdvertisingManager.AdvertisingIdのところで、

Assets\test.cs(27,20): error CS0103: The name 'Windows' does not exist in the current context

Windowsがないとエラーが出ます。
解決方法がわかる人がいたら教えていただきたいです。

参考にしたサイト
https://docs.unity3d.com/ja/2021.1/Manual/windowsstore-scripts.html

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dodox86

2021/07/20 17:18

ENABLE_WINMD_SUPPORT 定数を#defineプリプロセッサディレクティブで定義していますか? 英語版リファレンス: > all code that uses WinRT API must be under ENABLE_WINMD_SUPPORT define 日本語版リファレンス: > WinRT API を使用するすべてのコードはENABLE_WINMD_SUPPORT define と記してから書く必要があります。 英語版の記載内容が不充分な気がするのと、日本語訳が直訳過ぎる感じがするので伝わりづらいのかもしれませんが、要は #define ENABLE_WINMD_SUPPORT 相当のC#プリプロセッサでの定義をしろと言うことだと思います。
otaaa

2021/07/21 02:37

ご回答していただきありがとうございます。 #define ENABLE_WINMD_SUPPORT を加えたら、#if ENABLE_WINMD_SUPPORTの条件は通るようになりました。 しかし、WinRT APIで 「Windows.System.UserProfile.AdvertisingManager.AdvertisingId」 をよびだそうとすると、 error CS0103: The name 'Windows' does not exist in the current context このように「Windows」がないとエラーになります。 こちらの解決方法もわかりましたら、教えていただけないでしょうか?
guest

回答1

0

ベストアンサー

UWPは初挑戦につき、いまいち自信がないのですがENABLE_WINMD_SUPPORTはビルドしないと有効にならないかもしれませんね。
試しに下記のようなスクリプトを用意し...

lang

1using UnityEngine; 2 3public class ConditionalCompilationTest : MonoBehaviour 4{ 5 private void OnGUI() 6 { 7 #if UNITY_EDITOR 8 GUILayout.Label("Unity Editor"); 9 #endif 10 11 #if UNITY_WSA 12 GUILayout.Label("Universal Windows Platform"); 13 #endif 14 15 GUILayout.Label($"Advertising ID: {this.GetAdvertisingId()}"); 16 } 17 18 private string GetAdvertisingId() 19 { 20 #if ENABLE_WINMD_SUPPORT 21 return Windows.System.UserProfile.AdvertisingManager.AdvertisingId; 22 #else 23 return ""; 24 #endif 25 } 26}

プレイモードで実行した場合は下図のようになり...

図1

ビルドして実行した場合は下図のようになりました。ご参考になりますでしょうか?

図2

また、プラットフォーム依存のコードを書く場合は「Unity でプラットフォーム依存コンパイル内がグレーアウトされるときの対処法」や「Unityのスクリプト編集でifdefのターゲットをUWPに切り替える - MRが楽しい」で紹介されているような手順も併用すると楽になりそうですね。

投稿2021/07/21 21:49

Bongo

総合スコア10811

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問