小编Pro*_*mer的帖子

Unity中的enabled,isActiveAndEnabled和activeInHierarchy之间的区别

我无法相信这个问题还没有在某个地方被问过; 一个相当彻底的谷歌搜索没有结果.Unity文档说明了这个Behaviour.isActiveAndEnabled领域:

是否已启用行为已启用.
启用行为时为true,禁用时为false.

它说的是Behaviour.enabled:

已启用行为已更新,已禁用行为.
这显示为行为检查器中的小复选框.

因此,有一篇文章详细阐述了"启用"意味着什么比另一个更重要.据我所知,这些字段在完全相同的条件下是真/假的!那么区别是什么呢?你什么时候用一个而不是另一个?非常感谢澄清!

c# unity-game-engine unity5

14
推荐指数
2
解决办法
6065
查看次数

我是否可以在不支付Unity多人游戏服务的情况下使用Unity网络HLAPI?

我看到Unity的多人游戏服务页面,我完全糊涂了:

我是否可以在已发布的游戏中使用Unity的高级网络API(NetworkManager/NetworkManagerHUD)而无需支付Unity Matchmaker和中继服务器(无论这些是什么)?

我有自己的基于云的VM,我想在其上运行专用服务器.我的项目只是一个小游戏,我会和我的朋友玩(没有商业或大规模).我想在我的VM上以专用服务器模式运行该游戏的已发布副本,并让我的朋友运行他们发布的客户端副本并通过NetworkManager连接到服务器.

我可以免费吗?我不介意我的朋友是否必须使用NetworkManagerHUD在他们的游戏副本中手动输入服务器的IP和端口.他们这样做会被视为"CCU"(Unity Personal限制为20)吗?那会使用Unity Matchmaker带宽(0.49美元/ GB,甚至不适用于Unity Personal)吗?

任何澄清将不胜感激!:)

c# multiplayer unity-game-engine matchmaking

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

无需函数即可将字符串直接限制为一定长度

不重复.

我想让一个字符串有一个最大长度.它永远不会超过这个长度.让我们说20个字符长度.如果提供的字符串> 20,则取前20个字符串并丢弃其余字符串.

这个问题的答案显示了如何使用函数限制字符串,但我想在没有函数的情况下直接执行.我希望每次写入字符串时都会发生字符串长度检查.

下面是我并不想这样做:

string myString = "my long string";
myString = capString(myString, 20); //<-- Don't want to call a function each time

string capString(string strToCap, int strLen)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

我能用一个属性完成这个:

const int Max_Length = 20;
private string _userName;

public string userName
{
    get { return _userName; }
    set
    {
        _userName = string.IsNullOrEmpty(value) ? "" : value.Substring(0, Max_Length);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我可以轻松地使用它,而不是调用函数来限制它:

userName = "Programmer";
Run Code Online (Sandbox Code Playgroud)

这个问题是每个string我想要上限必须为它们定义多个变量.在这种情况下,_userNameuserName(属性)变量.

任何聪明的方法,不为每个字符串创建多个变量,同时,每次我想修改时都不必调用函数string …

c# unity-game-engine

13
推荐指数
2
解决办法
527
查看次数

使用C++中的Debug.Log

在Unity中制作C++插件时,更容易使用它Debug.Log来快速查看变量值,但此功能仅可从C#端获得.这使得调试C++插件非常困难,因为Unity的调试器不支持它.std::cout不是一个选项,因为它没有在编辑器中显示.

我查看了位于的Unity C++ API,<UnityInstallationDirecory>\Editor\Data\PluginAPI但没有找到有关登录API的任何信息.

有关如何在C++编辑器日志中显示的任何建议?

c# c++ unity-game-engine

13
推荐指数
1
解决办法
3628
查看次数

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

我正在使用Unity 2017.2.0f3,当我使用GUIText它时,它显示"此组件是旧UI系统的一部分,将在未来版本中删除." 那么我应该使用的最佳替代方案是什么?

c# unity-game-engine

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

在Unity中使用资源文件夹

我正在开发一个需要引用.txt文件的HoloLens项目.我将这些文件存储在Unity的"Resources"文件夹中,并让它们完美地运行(通过Unity运行时):

string basePath = Application.dataPath;
string metadataPath = String.Format(@"\Resources\...\metadata.txt", list);

// If metadata exists, set title and introduction strings.
if (File.Exists(basePath + metadataPath))
{
      using (StreamReader sr = new StreamReader(new FileStream(basePath + metadataPath, FileMode.Open)))
    {
         ...
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,在为HoloLens部署构建程序时,我能够运行代码,但它不起作用.没有任何资源出现,当检查HoloLens Visual Studio解决方案(通过在Unity中选择构建创建)时,我甚至没有看到资源或资源文件夹.我想知道我做错了什么,或者是否有一种特殊的方式来处理这些资源.

还有图像和声音文件......

foreach (string str in im)
{
      spriteList.Add(Resources.Load<Sprite>(str));
}
Run Code Online (Sandbox Code Playgroud)

字符串'str'有效; 它与Unity完全一致.然而,再次,它在通过HoloLens运行时没有加载任何东西.

c# resources assets unity-game-engine hololens

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

为三角形中的每个顶点设置颜色

我想从网格红色,蓝色和绿色设置三角形的每个三个顶点.

教程的第一部分所示,教程适用于另一种语言.这是他们用来为网格中每个三角形中的每个椎骨设置红色,绿色和蓝色的代码:

function set_wireframe_colors(m)
    local cc = {}
    for i = 1, m.size/3 do
        table.insert(cc, color(255,0,0))
        table.insert(cc, color(0,255,0))
        table.insert(cc, color(0,0,255))
    end
    m.colors = cc
end
Run Code Online (Sandbox Code Playgroud)

这就是使用简单的顶点颜色着色器输出的样子:

在此输入图像描述


我尝试在Unity中使用C#重新创建相同的东西,但我正在努力学习本教程的第一部分.

这是我的代码:

void Start()
{
    Mesh mesh = GetComponent<MeshFilter>().mesh;
    Vector3[] vertices = mesh.vertices;

    //Create new colors array where the colors will be created.
    Color32[] colors = new Color32[vertices.Length];

    for (int i = 0; i < vertices.Length; i += 3)
    {
        colors[i] = new Color32(255, 0, 0, 255);
        colors[i + 1] …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine vertex vertex-shader

12
推荐指数
1
解决办法
3623
查看次数

错误:与元素类型"uses-sdk"关联的属性"tools:overrideLibrary"的前缀"tools"未绑定

我在mac osx sierra上从unity构建apk文件时出现以下错误.在重新启动我的macbook之前,这也很好,但现在不行.

我在下面添加了错误详情:

注意:我正在使用facebook sdk.

Error: Error while saving blame file, build will continue
Error: The prefix "tools" for attribute "tools:overrideLibrary" associated with an element type "uses-sdk" is not bound.

UnityEditor.HostView:OnGUI()
Run Code Online (Sandbox Code Playgroud)

和:

AndroidSDKToolsException: Unable to merge android manifests. See the Console for more details. 
UnityEditor.Android.AndroidSDKTools.DetectErrorsAndWarnings (System.String logMessages, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandInternal (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg)
UnityEditor.Android.AndroidSDKTools.RunCommandSafe (System.String javaExe, System.String sdkToolsDir, System.String[] sdkToolCommand, Int32 memoryMB, System.String workingdir, UnityEditor.Android.WaitingForProcessToExit waitingForProcessToExit, System.String errorMsg) …
Run Code Online (Sandbox Code Playgroud)

android unity-game-engine android-manifest facebook-unity-sdk

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

在Unity中使用Shell技术实现Fur

我正在尝试使用Shells技术在Unity中实现毛发.Fins技术是故意遗漏的,因为我希望它在低端手机(主要是Android设备)上运行,并且需要OpenGL ES 3.0及更高版本,而Shells技术只需要OpenGL ES 2.0.

有一个基于XNA的Shell技术的例子,我试图将它移植到Unity但它无法工作.是XNA项目的文章.

XNA着色器:

float4x4 World;
float4x4 View;
float4x4 Projection;

float CurrentLayer; //value between 0 and 1
float MaxHairLength; //maximum hair length

texture FurTexture;
sampler FurSampler = sampler_state
{
    Texture = (FurTexture);
    MinFilter = Point;
    MagFilter = Point;
    MipFilter = Point;
    AddressU = Wrap;
    AddressV = Wrap;
};


struct VertexShaderInput
{
    float3 Position : POSITION0;
    float3 Normal : NORMAL0;
    float2 TexCoord : TEXCOORD0;
};

struct …
Run Code Online (Sandbox Code Playgroud)

c# shader xna unity-game-engine shaderlab

10
推荐指数
1
解决办法
991
查看次数

克隆/复制现有的 GameObject 及其子项

Unity 中是否有 C# 方式来复制现有的 GameObject 及其所有子项?就我而言,我有一个空的 GameObject,其中有许多 Text 对象作为子对象,我想为它们创建一个副本,包括相对位置、文本值、字体、颜色等......

预制件不会轻易工作,因为我想复制对象,包括其当前状态。

c# copy unity-game-engine gameobject unity5

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