标签: unity-game-engine

如何重命名Unity项目?

我想将Unity项目的名称更改为其他名称,以便Unity Editor在顶部显示新名称,或者当我使用Visual Studio打开脚本时,它会在VS的顶部显示新名称.怎么做?

更改项目名称是否会更改游戏名称(显示在游戏窗口左上角的名称)?

更改项目名称是否会更改游戏可执行文件的名称?

unity-game-engine

28
推荐指数
1
解决办法
3万
查看次数

为什么Resources.Load <Sprite>返回null?

我的项目有多个sprite位于Assets\Sprites中,我想用C#脚本加载它.

我测试了这个:

Sprite myFruit = Resources.Load <Sprite> ("Graphics_3");
Run Code Online (Sandbox Code Playgroud)

myFruit仍然是空的.

unity-game-engine unityscript

27
推荐指数
1
解决办法
7万
查看次数

ant jar错误:执行失败:java.io.IOException:无法运行程序... $ {aapt}":error = 2,没有这样的文件或目录

我正在尝试为Unity编译一个简单的Java库,在运行ant jar之后,我收到以下消息:

/Applications/adt-bundle-mac-x86_64-20140702/sdk/tools/ant/build.xml:649: The following error occurred while executing this line:
/Applications/adt-bundle-mac-x86_64-20140702/sdk/tools/ant/build.xml:694: Execute failed: java.io.IOException: Cannot run program "/Users/****/UnityProjects/****/JavaTestPlugin/${aapt}": error=2, No such file or directory
Run Code Online (Sandbox Code Playgroud)

这很奇怪,因为我在成功之前编译了这个类,并且我拥有了我认为需要的一切.即Android Studio和相关软件包(Tools,Android 4/5等).我注意到aapt不在我的adt-bundle/sdk/platform-tools目录中,但是它位于一个build-tools目录中.即使在我的道路上包括后者也无济于事.

无论如何,我正在使用最新版本的Android Studio运行Mac OS 10.10.3.这个类在升级到Yosemite之前编译.我已经看到了如何解决这个问题的建议,但所有这些建议都适用于Linux而不是Mac OS.

java macos android jar unity-game-engine

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

如何为Graph或Tree结构编写GUI编辑器

Unity3DMecanim动画系统具有自定义EditorWindow,允许定义一个树(在此情况下的共混物树)彻底GUI.

看起来像:

在此输入图像描述

它提供了创建节点(状态)和连接它们(转换)的可能性.

现在,我正在开发一些图形和树结构,我想编写一个编辑器扩展,以便让我的游戏设计师能够填充这些结构.

我想要最重新创建的EditorWindow就像Mecanim动画师一样(如上图所示).

我的问题是:我可以使用任何可用的组件来执行此类任务吗?是否有用于绘图和连接框和箭头的内置类?或者我需要自己完全编写GUI元素?

c# unity-game-engine

26
推荐指数
3
解决办法
3万
查看次数

如何在Unity中设置单元测试并修复缺少的程序集引用错误?

我创建了以下结构:

??? Assets
??? Scenes
??? Scripts
?   ??? MyExample.cs
??? Tests
?   ??? MyExampleTest.cs
?   ??? Tests.asmdef
Run Code Online (Sandbox Code Playgroud)

现在,当我单击Run Run,在Test Runner窗口中,在Unity中,我有以下错误:

The type or namespace name `MyExample' could not be found. Are you missing an assembly reference?
Run Code Online (Sandbox Code Playgroud)

在Visual Studio中,我有两个项目:

  • Assembly-CSharp(包含src)

  • 测试(包含测试)

我在第二个项目中添加了Assembly-CSharp作为参考.Visual Studio能够构建没有错误的解决方案.

有谁知道如何为Unity项目正确设置UnitTest回归?

这是Tests.asmdef

{
    "name": "Tests",
    "optionalUnityReferences": [
        "TestAssemblies"
    ]
}
Run Code Online (Sandbox Code Playgroud)

MyExampleTest.cs

using UnityEngine;
using UnityEngine.TestTools;
using NUnit.Framework;
using System.Collections;
using abc;

public class MyExampleTest{

    [Test]
    public void NewTestScriptSimplePasses() {
        // Use the Assert class to test conditions. …
Run Code Online (Sandbox Code Playgroud)

c# unit-testing unity-game-engine

26
推荐指数
3
解决办法
1万
查看次数

如何检测另一个应用程序是否正在播放音乐?

我正在制作一个游戏,我想在我的游戏运行时检测其他东西是否已经在播放音乐(或开始播放音乐)。如果是这样,我会淡出游戏中的音乐并继续播放音效。我正在使用 Unity 和 FMOD 进行音频播放。

尽我所能告诉 Android 提供了两种不同的方法来做到这一点:AudioManager.isMusicActiveAudioManager.OnAudioFocusChangeListener

AudioManager.isMusicActive不适用于我的特定情况,因为 Unity/FMOD 注册本身的方式似乎会使这始终返回 true

AudioManager.OnAudioFocusChangeListener 让我检测另一个应用程序是否请求音频焦点,但无法检测我是否可以安全地再次请求它。

我不知道 Unity/FMOD 如何设置音频会话,但默认是播放声音而不管后台播放的任何其他内容。所以,如果我只知道是否有其他东西在播放,这将很容易!

有没有办法判断除了我自己的应用程序之外的东西是否正在播放音乐?

注意:当我说音乐时,它也可能是有声读物、播客或最接近的等价物。

似乎有可能寻找任何正在进行的媒体播放通知,但这需要升级的权限,这对于这么小的功能来说似乎太大了。

以下是一些解决方案的候选者:

  • AudioFocusRequest.setAcceptsDelayedFocusGain这可以请求音频焦点时指定的,但只有真正意味着我不需要关注现在,以后也可以。但是,如果其他任何正在播放未“锁定”的音频,我将窃取音频焦点,停止它并且在此过程中不提供更多信息。

  • AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK最初似乎很有希望,但这取决于其他应用程序请求音频焦点将自身指定为瞬态(即通知声音或类似声音),并且对我检测更长形式的外部音频播放没有任何好处。

  • BroadcastReceiver/MediaNotifications,这是Spotify 的实现,但我只能说这需要我的应用程序内部为我想要确认的每个播放器提供特定支持,以及启用广播的用户。可能有用,但似乎很脆弱。

java audio android unity-game-engine

26
推荐指数
1
解决办法
915
查看次数

为什么调用Process.killProcess(Process.myPid())是个坏主意?

我读过一些帖子说使用这种方法"不好",不应该使用,这不是"关闭"应用程序的正确方法,而不是android的工作方式......

我理解并接受这样一个事实,即在正确的时间终止这个过程时Android OS比我更清楚,但我没有听到一个很好的解释为什么使用这个killProcess()方法是错误的?毕竟 - 它是android API的一部分......

我所知道的是,调用此方法时,其他线程正在执行潜在的重要工作(对文件的操作,写入数据库,HTTP请求,运行服务......)可以在中间终止,而且显然不是很好.此外,我知道我可以从"重新打开"应用程序将更快的事实中受益,因为系统可能仍然从上次使用时"保持"在内存状态,并killProcess()防止这种情况.

除了这个原因,假设我没有这样的操作,而且我不在乎我的应用程序会从头开始每次运行,还有其他原因为什么不使用这个killProcess()方法?

我知道关闭一个Activity的finish()方法,所以请不要写我这个... finish()仅供参考Activity.不是所有应用程序,我想我确切知道为什么以及何时使用它...

还有一件事 - 我正在使用Unity3D框架开发游戏,并将项目导出到android.当我反编译生成的apk时,我非常惊讶地发现java源代码是从Unity创建的 - 实现Unity的finish()方法,用Activity.

Application.quit()假设是根据Unity3d指南关闭游戏的正确方法(它真的吗?也许我错了,并且错过了一些东西),那么Unity的框架开发人员如何做得非常好,因为它似乎实现了这个原生android到Process.killProcess(Process.myPid())

android kill-process unity-game-engine

25
推荐指数
3
解决办法
1万
查看次数

Unity Android构建错误WIN32异常ZipAlign

每次我尝试为Android构建我的游戏时,都会收到此错误:

Error building Player: Win32Exception: 
ApplicationName='.../.../.../.../adt-bundle-mac-x86_64-20140624/sdk/tools/zipalign',
CommandLine='4"/.../.../.../.../Asteroid2(2)/Temp/StagingArea/Package.apk'". 
CurrentDirectory='Temp/StagingArea'
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?我很难过.我重新下载了SDK,但没有帮助.

java sdk android unity-game-engine

25
推荐指数
2
解决办法
3万
查看次数

使用语句中的异步方法

注意:我在Unity中使用C#,这意味着.NET 3.5版本,所以我不能使用awaitasync关键字..

当我在其中放入异步工作的方法时,使用语句会发生什么?

using (WebClient wc = new WebClient()) {
    wc.DownloadFileAsync(urlUri, outputFile);
}
SomeMethod1();
SomeMethod2();
Run Code Online (Sandbox Code Playgroud)

如您所知,在DownloadFileAsync()调用该方法之后,SomeMethod1()将在仍在工作using时调用哪个是块外的.所以现在我真的很困惑在这种情况下using语句和异步方法会发生什么.DownloadFileAsync()

Dispose()wc,在没有任何问题的正确的时间叫什么名字?

如果没有,我该如何更正此示例?

c# asynchronous using unity-game-engine .net-3.5

25
推荐指数
2
解决办法
5080
查看次数

从另一个Thread使用Unity API或调用主Thread中的函数

我的问题是我尝试使用Unity套接字来实现一些东西.每次,当我收到新消息时,我需要将其更新为updattext(它是Unity Text).但是,当我执行以下代码时,void update不会每次都调用.

我没有包含updatetext.GetComponent<Text>().text = "From server: "+tempMesg;在void getInformation中的原因是这个函数在线程中,当我在getInformation()中包含它时会出现错误:

getcomponentfastpath can only be called from the main thread

我认为问题是我不知道如何在C#中运行主线程和子线程?或者可能还有其他问题...希望有人可以提供帮助..有我的代码:

using UnityEngine;
using System.Collections;
using System;
using System.Net.Sockets;
using System.Text;
using System.Threading;
using UnityEngine.UI;


public class Client : MonoBehaviour {

    System.Net.Sockets.TcpClient clientSocket = new System.Net.Sockets.TcpClient();
    private Thread oThread;

//  for UI update
    public GameObject updatetext;
    String tempMesg = "Waiting...";

    // Use this for initialization
    void Start () {
        updatetext.GetComponent<Text>().text = "Waiting...";
        clientSocket.Connect("10.132.198.29", 8888);
        oThread = new Thread (new ThreadStart …
Run Code Online (Sandbox Code Playgroud)

c# multithreading unity-game-engine

25
推荐指数
4
解决办法
2万
查看次数