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

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

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

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

Q&A

解決済

1回答

2211閲覧

UnityでのSocialConnector使用時エラーについて

naki888

総合スコア12

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

SNS

SNS(ソーシャル・ネットワーキング・サービス)は、 人と人とのつながりを促進したり、サポートしたりすることが可能なコミュニティ型のWebサービスです。

0グッド

0クリップ

投稿2020/09/11 02:40

UnityにSocialConnectorをインポートし、名前空間で使用しているにもかかわらず、
SocialConnector.Share(tweetText, tweetURL, imgPath);の部分が下記エラーとなってしまいます。

Assets/script/SNS/SNS.cs(34,9): error CS0234: The type or namespace name 'Share' does not exist in the namespace 'SocialConnector' (are you missing an assembly reference?)

現在私が使用しているスクリプトとSocialConnectorの該当スクリプトの抜粋を下記に記載します。

問題点がございましたらご教示いただければ幸いです。何卒よろしくお願いいたします。

C#

1using UnityEngine; 2using System.IO; 3using System.Collections; 4using SocialConnector; 5using UnityEngine.UI; 6 7public class SNS : MonoBehaviour 8{ 9 public void Share() 10 { 11 StartCoroutine(_Share()); 12 } 13 14 public IEnumerator _Share() 15 { 16 string imgPath = Application.persistentDataPath + "/image.png"; 17 18 // 前回のデータを削除 19 File.Delete(imgPath); 20 21 //スクリーンショットを撮影 22 ScreenCapture.CaptureScreenshot("image.png"); 23 24 // 撮影画像の保存が完了するまで待機 25 while (true) 26 { 27 if (File.Exists(imgPath)) break; 28 yield return null; 29 } 30 31 // 投稿する 32 string tweetText = ""; 33 string tweetURL = ""; 34 SocialConnector.Share(tweetText, tweetURL, imgPath); 35 } 36} 37

C#

1using UnityEngine; 2 3#if UNITY_IPHONE 4 5using System.Runtime.InteropServices; 6 7#endif 8 9namespace SocialConnector 10{ 11 public class SocialConnector 12 { 13 #if UNITY_IPHONE 14 [DllImport ("__Internal")] 15 private static extern void SocialConnector_Share (string text, string url, string textureUrl); 16 17 18 #elif UNITY_ANDROID 19 private static AndroidJavaObject clazz = new AndroidJavaClass ("com.unity3d.player.UnityPlayer"); 20 private static AndroidJavaObject activity = clazz.GetStatic<AndroidJavaObject> ("currentActivity"); 21 #endif 22 23 #if UNITY_IPHONE 24 25 private static void _Share (string text, string url, string textureUrl) 26 { 27 SocialConnector_Share (text, url, textureUrl); 28 } 29 30 31 #elif UNITY_ANDROID 32 33 private static void _Share (string text, string url, string textureUrl) 34 { 35 using (var intent = new AndroidJavaObject ("android.content.Intent")) { 36 intent.Call<AndroidJavaObject> ("setAction", "android.intent.action.SEND"); 37 intent.Call<AndroidJavaObject> ("setType", string.IsNullOrEmpty (textureUrl) ? "text/plain" : "image/png"); 38 39 if (!string.IsNullOrEmpty (url)) 40 text += "\t" + url; 41 if (!string.IsNullOrEmpty (text)) 42 intent.Call<AndroidJavaObject> ("putExtra", "android.intent.extra.TEXT", text); 43 44 if (!string.IsNullOrEmpty (textureUrl)) { 45 46 var versionClazz = new AndroidJavaClass("android.os.Build$VERSION"); 47 var apiLevel = versionClazz.GetStatic<int>("SDK_INT"); 48 AndroidJavaObject uri; 49 if(24 <= apiLevel) { 50 var context = activity.Call<AndroidJavaObject> ("getApplicationContext"); 51 var fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider"); 52 var file = new AndroidJavaObject ("java.io.File", textureUrl); 53 uri = fileProvider.CallStatic<AndroidJavaObject>("getUriForFile", context, Application.identifier + ".fileprovider", file); 54 } else { 55 var uriClazz = new AndroidJavaClass ("android.net.Uri"); 56 var file = new AndroidJavaObject ("java.io.File", textureUrl); 57 uri = uriClazz.CallStatic<AndroidJavaObject> ("fromFile", file); 58 } 59 intent.Call<AndroidJavaObject> ("putExtra", "android.intent.extra.STREAM", uri); 60 } 61 var chooser = intent.CallStatic<AndroidJavaObject> ("createChooser", intent, ""); 62 chooser.Call<AndroidJavaObject> ("putExtra", "android.intent.extra.EXTRA_INITIAL_INTENTS", intent); 63 activity.Call ("startActivity", chooser); 64 } 65 } 66 #endif 67 68 public static void Share (string text) 69 { 70 Share (text, null, null); 71 } 72 73 public static void Share (string text, string url) 74 { 75 Share (text, url, null); 76 } 77 78 public static void Share (string text, string url, string textureUrl) 79 { 80#if UNITY_ANDROID || UNITY_IPHONE 81 _Share (text, url, textureUrl); 82#endif 83 } 84 } 85} 86

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

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

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

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

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

guest

回答1

0

ベストアンサー

C#コンパイラはnamespaceとクラス名を区別していないのでSocialConnectorのように同じ名前にすると曖昧になりどちらなのか解決できないのが原因のようです。

https://stackoverflow.com/questions/18731415/namespace-and-class-with-the-same-name

解決策は以下のどちらかです。

  1. SocialConnector.csのnamespaceとクラス名を異なる名前にする
  2. SNS.csからnamespace付きで呼ぶ SocialConnector.SocialConnector.Share(tweetText, tweetURL, imgPath);

投稿2020/09/11 15:18

shiena

総合スコア1827

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

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

naki888

2020/09/27 02:59

ありがとうございます。試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問