小编Pro*_*mer的帖子

安装时将文件从Resources/StreamingAssets复制到Application.persistentDataPath

我有txt包含游戏中地图数据的文件.问题是文件存储在中,Application.persistentDataPath所以我甚至可以从我的Android设备(创建的地图创建者)更改它,那么如何在我的PC上创建包含基本地图的txt文件,并在persistentDataPath安装时将其显示在我的Android设备上应用?

c# android unity-game-engine

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

为什么在非MonoBehaviour序列化类中进行多个构造函数调用?

我已经将一个脚本附加到Unity游戏对象.该脚本包含各种公共属性,包括我自己的一些类.如下面的简化代码所示,其中TestMonoBehaviorClass附加到游戏对象并且TestClass' TestString在检查器中显示.

public class TestMonoBehaviorClass : MonoBehaviour
{
    public TestClass Test;
}

[System.Serializable]
public class TestClass
{
    public string TestString;
    public TestClass ()
    {
        Debug.Log ("TestClass creator called.");
        this.TestString = "Reset String";
    }
}
Run Code Online (Sandbox Code Playgroud)

当我将脚本附加到游戏对象时,我希望调用一次TestClass(编辑:不是从MonoBehavior派生的构造函数)的构造函数.但如果我在Unity编辑器中运行程序然后停止程序,则会调用它四次.如果我将脚本附加到两个游戏对象上,则会七次.至少我多次在控制台中看到Debug.Log的输出.

不过,如果我TestString在编辑器中更改属性的内容,我手动输入的内容不会被覆盖!

为什么构造函数经常调用?何时在Unity的执行顺序中调用(Unity的事件函数执行顺序)?我可以忽略调用,还是必须在构造函数中添加特殊处理?到目前为止,我没有看到任何实际问题或副作用.

编辑:似乎只调用没有参数的构造函数.如果我只有带参数的构造函数,则不调用任何构造函数.

c# constructor execution unity-game-engine inspector

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

如何使用TryParseHtmlString将十六进制转换为Color(RGBA)

如何使用HEX值更改Unity中的按钮颜色?
我尝试了这个,但它不起作用,也许我在这里犯了一个错误:

btn.image.color = ColorUtility.TryParseHtmlString(DADADAFF, out color); 
Run Code Online (Sandbox Code Playgroud)

c# colors unity-game-engine

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

使游戏对象在编辑器窗口中不可选择

我的场景中有一个淡入淡出面板gameobject,它必须位于所有其他游戏对象之上。但是,当我单击编辑器窗口中的某个对象时,由于该对象gameobject位于所有对象之上,因此是在层次结构中自动选择的对象。

有没有办法将 保持gameobject在画布顶部,就像现在一样,但当我单击场景时使其完全不可选择?

c# unity-game-engine

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

通过脚本统一设置播放器设置目标架构

我有自定义的构建脚本,我想在其中添加更多选项。目标架构是其中之一。(我将IL2CPP用作脚本后端-我通过脚本进行设置)

在这里,您可以查看要更改的设置:

根据文档,我可以使用PlayerSettings.SetArchitecture(),但似乎根本不适合我。它只有0-无,1-ARM64,2-通用的选项,我想要全部。所以我尝试使用:

PlayerSettings.SetArchitecture(BuildTargetGroup.Android, unchecked((int)AndroidArchitecture.All));
Run Code Online (Sandbox Code Playgroud)

但它不会改变任何东西,下面的几行也不会改变任何东西:

PlayerSettings.SetArchitecture(BuildTargetGroup.Android, unchecked((int)AndroidArchitecture.ARM64));
PlayerSettings.SetArchitecture(BuildTargetGroup.Android, unchecked((int)AndroidArchitecture.ARMv7));
PlayerSettings.SetArchitecture(BuildTargetGroup.Android, unchecked((int)AndroidArchitecture.X86));
Run Code Online (Sandbox Code Playgroud)

我想知道如何正确地做到这一点?

c# unity-game-engine

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

如何找到线上的最近点?

我有一个点(A)和一个向量(V)(假设它是无限长),并且我想找到直线上与原始点(A)最接近的点(B)。使用Unity Vector2或Vector3的最简单的表达式是什么?

c# vectormath unity-game-engine

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

如何在运行时使用 .bmp 文件并在 Unity 中创建纹理?

我在一个 Unity 项目中工作,用户选择.bmp用于制作Texture2D并粘贴到模型的图像文件(格式),我创建了下一个代码,我可以正常使用.png.jpg文件,但是当我尝试加载时,.bmp我得到了只有(我假设)带有红色“?”的默认纹理 符号,所以我认为是图像格式,如何.bmp在运行时使用文件创建纹理?

这是我的代码:

public static Texture2D LoadTexture(string filePath)
{
    Texture2D tex = null;
    byte[] fileData;

    if (File.Exists(filePath))
    {
        fileData = File.ReadAllBytes(filePath);
        tex = new Texture2D(2, 2);
        tex.LoadImage(fileData);
    }

    return tex;
}
Run Code Online (Sandbox Code Playgroud)

c# textures bmp texture2d unity-game-engine

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

将Image的精灵设置为默认无

我有一个项目,我在屏幕上有一个图像开始空白,然后图像作为精灵放置.我很想知道如何让精灵恢复为默认状态.谢谢

c# unity-game-engine

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

Unity输入在印刷机中多次检测到

我有一个MonoBehavior使用这些方法的源脚本:

private void Update () {
    if (Input.GetMouseButton(0)) {
        HandleInput();
    }
}

private void HandleInput () {
    Ray inputRay = Camera.main.ScreenPointToRay(Input.mousePosition);
    RaycastHit hit;

    if (Physics.Raycast(inputRay, out hit)) {
        var position = transform.InverseTransformPoint(hit.point);
        Coordinates coords = Coordinates.FromPosition(position);
        HexCell cell = null;        
        if (!cells.TryGetValue(coords, out cell)) {
            var err = string.Format("{0} is an invalid position and coordinates are improperly calculated: {1}", position, coords);
            print(err);

            throw new System.ArgumentException(err);
        }

        print(string.Format("[{0}] cell: [{1}] {2}", DateTime.Now, cell.id, cell.coordinates));
        OnCellTouched(cell);
    }
}
Run Code Online (Sandbox Code Playgroud)

网格是透明的,我按预期得到六边形(单元格).在编辑器中,当我单击一个单元格时,我得到一条消息输出:

[05.31.2017.14.15.14.2836] …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine

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

按名称,标签或图层查找非活动的GameObject

首先,我需要停用一个游戏对象,然后在10秒后激活它,所以我认为协同程序是合适的:

IEnumerator BarDeactivate(float sec)
{
        yield return new WaitForSeconds(sec);

        var obj = GameObject.Find("OBJ");
        obj.SetActive(false);
}

IEnumerator BarReactivate(float sec)
{
        yield return new WaitForSeconds(sec);

        var obj = transform.Find("OBJ");
        obj.SetActive(true);
}
Run Code Online (Sandbox Code Playgroud)

显然,我不能再使用,GameObject.Find所以我用它transform.Find来找到不活跃的游戏对象,但当然.SetActive现在不行,因为obj实际上并不是游戏对象...

如何投射找到的变换,以便可以再次设置它?

我试过obj.gameObject.SetActive(true)但它一定是错的,因为这个物体不会复活......

c# unity-game-engine

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