小编Pro*_*mer的帖子

如何使用UnityPlayer.UnitySendMessage调用方法并返回其值

如何从Java调用此C#方法然后返回字符串值?

public string getTest () { return "test"; }
Run Code Online (Sandbox Code Playgroud)

这就是我尝试过的:

String str = UnityPlayer.UnitySendMessage("ProfileSave", "getTest","");
Run Code Online (Sandbox Code Playgroud)

我收到以下错误

String str=UnityPlayer.UnitySendMessage("ProfileSave", "getTest","");                                 
^
 required: String  
 found:    void
Run Code Online (Sandbox Code Playgroud)

android unity-game-engine unityscript unity5

7
推荐指数
2
解决办法
7371
查看次数

Unity从脚本创建UI控件

我通过代码创建了一个切换,但它不会显示.此外,我无法改变文本字段的位置.我尝试了很多,没有任何作用.这是我目前的版本,也许你看错了.

我是Unity新手,非常困难.

public class Game : MonoBehaviour 
{

    public GameObject canvas;

    void Start () 
    {
        GameObject newGO = new GameObject("myTextGO");
        newGO.transform.SetParent(this.transform);
        newGO.transform.position = new Vector3(0, 0, 0);

        Text myText = newGO.AddComponent<Text>();
        myText.text = "Ta-dah!";
        Font ArialFont =  
           (Font)Resources.GetBuiltinResource(typeof(Font),"Arial.ttf");
        myText.font = ArialFont;
        myText.material = ArialFont.material;
        myText.color = Color.black;
        myText.transform.position = new Vector3(0, 10, 0);

        GameObject secGO = new GameObject("myGO");
        secGO.transform.SetParent(this.transform);
        Toggle myToggle = secGO.AddComponent<Toggle>();
        myToggle.isOn = true;
        myToggle.transform.position = new Vector3(10, 10, 0);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# toggle unity-game-engine unity5

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

从字节数组数据中获取图像宽度和高度

我有一个byte []数组,它读取一个本地文件,然后我将它分配给一个单一的Texture2D.使用im.sprite = Sprite.Create()函数分配图像.

我遇到的问题是我需要从字节数组中检测图像的宽度和高度,这样我就可以调整纹理大小,避免在运行时在统一场景上进行图像拉伸.

您知道如何使用库或某种函数来创建图像字节数组中的临时图像,然后在创建精灵并应用纹理之前查看所需的宽度和高度吗?

我已经在Java中找到了解决方案,但是通过适应c#无法实现它的工作.

c# arrays image unity-game-engine

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

断点当前不会被击中.Unity中没有为此文档加载任何符号

我正在尝试使用VS2017在Unity中调试协程.

当我将VS连接到Unity并在IEnumerator方法中设置断点时,我收到错误"断点不会被击中"

在此输入图像描述

这里将深入讨论: 如何解决"断点当前不会被命中.此文档没有加载符号".警告?

然而,这些答案都不适合我.

你知道如何在VS2017中的IEnumerator中设置断点吗?

c# debugging breakpoints coroutine unity-game-engine

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

在Unity中构建和加载Assetbundle

我不能让Unity Assetbundles在iOS版本中工作.

在Unity中,我构建了assetsbundles:

using UnityEditor;

public class CreateAssetBundles
{
    [MenuItem("Assets/Build AssetBundles")]
    static void BuildAllAssetBundles()
    {
        BuildPipeline.BuildAssetBundles("Assets/AssetBundles", BuildAssetBundleOptions.None, BuildTarget.iOS);
    }
 }
Run Code Online (Sandbox Code Playgroud)

它们在Unity中运行良好.使用它们

AssetBundle bundleLoadRequest = AssetBundle.LoadFromFile("file://" + Application.dataPath + "/AssetBundles/iOS/" + myassetbundlename.ToString());
Run Code Online (Sandbox Code Playgroud)

和/或

WWW wwww = WWW.LoadFromCacheOrDownload("file://" + Application.dataPath + "/AssetBundles/iOS/" + myassetbundlename.ToString(), 4); 
Run Code Online (Sandbox Code Playgroud)

(如果没有"file://"前缀,捆绑包将无法在Unity或Xcode中工作)

我将项目构建到Xcode并在Xcode中运行它并收到此错误:

无法打开存档文件:/ Users/user/Documents/Workspaces/unityproject/Assets/AssetBundles/iOS/lchairanimations

它可能与某种方式设置正确的路径有关,但由于我之后将assetbundle文件夹复制到Xcode项目,问题仍然存在.

c# xcode unity-game-engine ios assetbundle

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

如何锁定RectTransform的字段

我正在创建自定义布局组,我想控制RectTransform子对象.我想RectTransform在使用canvas或Unity的Horizo​​ntal或Vertical组时锁定某些字段,以便无法修改它.

我需要同样的效果.您可以在子项的基础上看到此消息RectTransform:由Horizo​​ntalLayoutGroup驱动的某些值

在此输入图像描述

我发现了一半:

[ExecuteInEditMode]然后添加:

public void Update()
{
#if UNITY_EDITOR
    if (!Application.isPlaying)
    {
        /* Todo => update child's positions here. */
    }
#endif
}
Run Code Online (Sandbox Code Playgroud)

还有其他想法吗?

c# unity-game-engine unity5

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

使用EventSystem进行按键事件

上下文:假设您正在检查键盘上是否按下了"W",最常见的检查方法是通过以下代码:

void Update(){
    if (Input.GetKeyDown("W"))
        DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用Unity的EventSystem执行以下操作?换句话说,是否有像IPointerClickHandler这样的接口的实现,例如,检查按钮是否被按下,而不是在Update()函数中这样做?

c# unity-game-engine

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

在智能感知中显示 C# 参考文档

如果我创建一个列表列表.. Visual Studio 为其成员提供智能感知,但没有关于成员的文档。如果我查看 List 的定义,我会看到以下内容:

[DefaultMember("Item")]
public class List<T> : IEnumerable, ICollection, IList, ICollection<T>, IEnumerable<T>, IList<T>
{
    // ...
    public void Add(T item);
    public void Clear();
    public bool Contains(T item);
    // ...
}
Run Code Online (Sandbox Code Playgroud)

没有任何成员的评论/描述。这适用于任何其他核心类。

我可以做些什么来让 Visual Studio 2017 显示文档,这样当我想知道某个方法的作用时,我就不必按 Alt+Tab 访问官方 C# 参考文档网站?

是否需要添加任何 SDK 库才能获得文档?

我在 Unity 项目上使用 Visual Studio。

c# unity-game-engine visual-studio

7
推荐指数
2
解决办法
1239
查看次数

AudioClip的频率和音高关系 - Unity3D

我试图仅使用6个音频剪辑重新创建全系列的吉他.

我想有一种设置音频剪辑频率的方法,但audio.frequency只返回基于压缩格式而不是实际音调的音频频率.

我知道我可以阅读GetSpectrumData,但是这个解决方案相当复杂,需要进行一些傅里叶变换分析或类似的东西.

影响音高,很容易改变音调,所以我可以上下,但是有办法弄清楚使用的步骤是什么.

void Update () 
{
    CheckAudio(KeyCode.Q, 1.0f);
    CheckAudio(KeyCode.W, 1.1f);
    CheckAudio(KeyCode.E, 1.2f);
    CheckAudio(KeyCode.R, 1.3f);
    CheckAudio(KeyCode.T, 1.4f);
}

void CheckAudio(KeyCode key, float pitch)
{
    if (Input.GetKeyDown (key)) 
    {
        audio.pitch = pitch;
        audio.Play ();
    }
}
Run Code Online (Sandbox Code Playgroud)

我听说听起来不对劲.

知道初始音调E4 329.63Hz,音高为1是否有任何影响音高的方程式,我会得到下一个键F4 349.23Hz(或足够接近)?

还必须考虑Unity AudioSource将音调限制在-3/3范围内(我认为这超出了需要).

编辑:添加一些个人研究.似乎音高1是初始音符,设置为2给出相同的音高一个八度.

由于半音阶(钢琴上的所有黑白音符)都是12个键,我假设每个步骤使用1/12应该这样做.

听起来很接近,但我觉得它不太对劲.这是新代码:

[SerializeField] private AudioSource audio;
float step = 1f/12f;
KeyCode[]keys = new KeyCode[]{
    KeyCode.Q, KeyCode.W,KeyCode.E,KeyCode.R,KeyCode.T,
    KeyCode.Y, KeyCode.U, KeyCode.I, KeyCode.O, KeyCode.P,
    KeyCode.A, KeyCode.S, KeyCode.D
};

void Update () 
{
    float f = 0.0f;
    foreach (KeyCode key in …
Run Code Online (Sandbox Code Playgroud)

c# audio frequency unity-game-engine audioclip

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

GUITexture已被弃用,那么我应该使用什么而不是它呢?

我目前遇到了C#中更新编码的问题.我正在制作一本教科书"3.x Game Development Essentials",目前正在尝试制作一个阵列,该阵列将分配纹理,这将显示电池充电的进度.教科书要我创建一个GUITexture,但是这在之前的Unity更新中已经过时了,所以我创建了一个创建Canvas和子游戏对象的UI Image.虽然这解决了屏幕上的问题,但编码时情况更糟.这本书要我创建一个由五个纹理组成的数组(四种状态,加上原始的空纹理).目标是每当角色拿起一个电池时,它会在UI Canvas中反映出来.现在,这是我得到goobery的地方:

这是本书指定在我的Inventory脚本上实现的原始编码:

public Texture2D [] hudCharge;
public GUITexture charge HudGUI;
Run Code Online (Sandbox Code Playgroud)

我最终不得不松鼠去处理旧代码,并尝试了这个:

using UnityEngine.UI;

public class Inventory : MonoBehaviour{
public static int charge = 0
public UnityEngine.AudioClip collectSound;
public UnityEngine.Texture2D[] hudCharge;
public Image chargeHudGUI;
Run Code Online (Sandbox Code Playgroud)

现在我们变得更奇怪了.因为本书使用的是过时的代码,所以它要我使用电荷值从数组中选择一个纹理.因此,它要我输入:

chargeHudGUI.texture = hudCharge[charge];
Run Code Online (Sandbox Code Playgroud)

目标是我们正在解决分配给chargeHudGUI变量的GUITexture对象,特别是它的纹理属性.嗯,这很时髦但是再也没有GUITexture了,那么它离我而去的地方呢?它让我这样:

chargeHudGUI.Image = hudCharge[charge].
Run Code Online (Sandbox Code Playgroud)

我一直在浏览每个线程,我可以尝试找出该做什么,但似乎没有解决这个特殊问题.有没有人有任何指导导航这个废话?我已经在这个游戏上工作了一段时间,我决心完成它.我想学习如何使用Visual Studio和Unity3D.我感谢任何帮助!

c# user-interface unity-game-engine visual-studio guitexture

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