小编kUr*_*4m4的帖子

在unity3d中通过标签查找不活动的gameobject

我有一个游戏对象,我想在一定条件下激活它.我给它一个独特的标签,我尝试使用GameObject.FindObjectWithTag("Tag name").从我可以告诉,这个方法只会在场景中找到活跃的游戏对象而不是非活动的游戏对象.

有没有我可以调用的方法,也可以搜索非活动的游戏对象?(最好用标签搜索).

谢谢!

c# unity-game-engine

9
推荐指数
1
解决办法
2万
查看次数

打开带有附件的短信应用程序

我正在尝试从Unity应用程序启动Intent,该应用程序将启动带有附件的文本消息传递应用程序。

我已经可以打开短信应用程序,但是附件无法正确加载,引发以下异常:

'无法确定文件的类型:///storage/emulated/0/Android/data/com.torpedoesaway.memematch/files/Gifit2MemeFiles/gifit2meme-2019-09-7-09-39-54.gifjava.io。 IOException:java.lang.RuntimeException:setDataSource失败:status = 0x80000000'

请注意,我还尝试加载其他图像,例如png和jpg,都引发相同的错误。

这是我的代码:

Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" + recipient));
intent.putExtra("sms_body", message);
intent.putExtra(Intent.EXTRA_STREAM, attachment);

if (intent.resolveActivity(activity.getPackageManager()) != null) {
   activity.startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)

我尝试使用intent动作以及setData/ setType调用,在一种情况下,我可以打开选择器,选择消息传递应用程序,然后正确加载附件。但是,我想直接在附件正常工作的情况下打开短信应用程序。

在此先感谢您的帮助!

编辑:

我如何从Unity拨打电话:

AndroidJavaClass Uri = new AndroidJavaClass("android.net.Uri");
        AndroidJavaObject uri = Uri.CallStatic<AndroidJavaObject>("parse", path);

        unityClass = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
        pluginClass = new AndroidJavaObject("com.torpedosaway.giftomessage.Gif2Message");
        pluginClass.Call(
            "ComposeMmsMessage",
            "53876045",
            "message",
            uri,
            unityClass.GetStatic<AndroidJavaObject>("currentActivity"));
Run Code Online (Sandbox Code Playgroud)

android unity-game-engine android-intent android-gradle-plugin

6
推荐指数
1
解决办法
315
查看次数

从unity3d内部发送电子邮件

我正在尝试使用SmtpClient类从智能手机内部发送一封电子邮件.我已经在iOS上完成了这个非常简单的任务,但完全相同的代码在android上不起作用.这是代码:

private IEnumerator sendAutoMail (string textBody,string title)
{
    MailMessage mail = new MailMessage();
    mail.From = new MailAddress(sender);
    mail.To.Add(receiver);
    mail.Subject = "R4UL " + title;
    mail.Body = textBody;

    Debug.Log("Connecting to SMTP server");
    SmtpClient smtpServer = new SmtpClient("smtp.gmail.com");
    smtpServer.Port = 587;
    smtpServer.Credentials = new System.Net.NetworkCredential(sender, password) as ICredentialsByHost;
    smtpServer.EnableSsl = true;
    ServicePointManager.ServerCertificateValidationCallback = delegate(object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
    {
        return true;
    };
    Debug.Log("Sending message");
    smtpServer.Send(mail);
    yield return null;
}
Run Code Online (Sandbox Code Playgroud)

发件人,密码和收件人是我的Gmail帐户,我的Gmail密码和我希望分别发送电子邮件的人.

所以这在iOS上完美运行但在Android上引发了以下错误:

I/Unity(6256):SocketException:没有这样的主机是I/Unity(6256):在System.Net.Dns.GetHostByName(System.String hostName)[0 x00000] in:0 I/Unity(6256):at System.Net.Dns.GetHostEntry(System.String hostNameOrAdd ress)[0x00000] …

c# android smtp unity-game-engine

5
推荐指数
1
解决办法
6919
查看次数

Unity3d和线程

我想在我的应用程序中做一些耗时但对实际游戏没有影响的东西.因此,我试图使用一个线程分别运行这些东西.以下是我创建线程的方法:

Thread thread = new Thread(() => WriteCheckpointTextFile (myFileName, checkpoint));
thread.Start();
Run Code Online (Sandbox Code Playgroud)

这是我在WriteCheckpointTextFile中运行的代码:

void WriteCheckpointTextFile (string fileName, Checkpoint checkpoint)
{
            string checkpointToText = "";
            checkpointToText += CheckpointDataNames.nextMarker + Environment.NewLine;
            checkpointToText += checkpoint.nextMarker + Environment.NewLine;
            checkpointToText += "%" + Environment.NewLine;

            checkpointToText += CheckpointDataNames.difficulty + Environment.NewLine;
            checkpointToText += checkpoint.difficulty.ToString () + Environment.NewLine;
            checkpointToText += "%" + Environment.NewLine;

            checkpointToText += CheckpointDataNames.musicObject + Environment.NewLine;
            checkpointToText += checkpoint.musicObject + Environment.NewLine;
            checkpointToText += "%" + Environment.NewLine;

            checkpointToText += CheckpointDataNames.gameTimePassed + Environment.NewLine;
            checkpointToText += checkpoint.gameTimePassed.ToString () + Environment.NewLine; …
Run Code Online (Sandbox Code Playgroud)

c# io multithreading unity-game-engine

5
推荐指数
1
解决办法
2120
查看次数

计算元素在列表中的持续时间

跟踪元素作为列表一部分的时间最简单的方法是什么?例如,我想在添加2分钟后从列表中弹出一个元素.

我是否必须创建两个列表,一个包含实际元素,另一个包含元素添加到列表的时间?然后检查"时间"列表,以便知道它何时达到两分钟?

我有一种感觉,这是一种更简单有效的方法,但我现在想不到它......

c# unity-game-engine

2
推荐指数
1
解决办法
71
查看次数

更改精灵时自动重写boxcollider2D

我有一个带有精灵渲染器和boxcollider2D的预制件,我用它来制作游戏中的子弹.

我为每种类型的子弹使用的精灵都有不同的大小,因此,当我实例化一个子弹,其子弹大小不同于我的预制件中的通用子弹时,boxcollider并不总是与精灵大小相匹配.

我注意到,在我的游戏对象中添加一个boxcollider时它会自动适合精灵.有没有办法从脚本中进行自动调用?或者唯一的方法是在运行时添加对撞机?

c# unity-game-engine

2
推荐指数
1
解决办法
3631
查看次数

查找数组匹配查询中的元素数

我有以下课程:

public class Words
{
    public string word;
    public bool correct;
}
Run Code Online (Sandbox Code Playgroud)

我有一系列的单词.

Words[] words;
Run Code Online (Sandbox Code Playgroud)

我想计算我的数组中有多少元素将属性correct设置为true.

最有效的方法是什么?

c# arrays

0
推荐指数
1
解决办法
63
查看次数

Unity3d字体带删除线

有没有办法在一个删除线/穿透(例子)字体GUIText

我到处都搜索过,似乎无法在任何地方找到它.

c# fonts unity-game-engine

0
推荐指数
1
解决办法
2785
查看次数