标签: unity-editor

如何克隆多个游戏对象的方式可以调整克隆的属性,以匹配场景视图中的所有其他对象

我问我如何调整一个克隆的形状/尺寸以影响场景视图中的所有其他克隆,并且接受的答案是现场.它只能克隆一个游戏对象.我尝试进行一些调整,但我提出的唯一解决方案是为其他对象添加重复方法.在处理要克隆的几个游戏对象时,这不能很好地工作.

如何克隆几个独特的游戏对象,以便调整一个克隆的组件/属性会影响场景视图中该对象的所有其他克隆?

请注意,我不想在运行时实现这一点,我不想使用预制件.我正在使用它来帮助创建复杂的级别,因此正在调整克隆的实时更新非常重要.

另外,我还需要一种方法来关闭每个克隆上的重复属性/组件复制,最好是用一个按钮.

unity-game-engine unity-editor

14
推荐指数
1
解决办法
588
查看次数

如何创建一个illustrator/photoshop-like pentool用于在Unity中创建贝塞尔曲线

我需要创建复杂的分段贝塞尔曲线,所以我想更新代码以创建illustrator/photoshop类笔工具贝塞尔曲线.此视频显示了pentool的行为方式.

请注意,不是使用前两个锚点创建二次贝塞尔曲线(如视频中所示),我宁愿选择立方体(如链接代码示例中所示).

以下是我已经实现的Illustrator/photoshop笔工具的功能,这些功能是Unity中复制所必需的.

  • 在第一次单击时在同一个鼠标点创建所有锚点/控制点(在第一次单击时创建对象)

  • 当鼠标点从第一次点击移动(未按下)时,控制点将与两个锚点一起落入以创建一条直线(三次曲线)

  • 当单击并拖动鼠标(距离第一次点击任何距离)时,控制点远离直线移动以形成基于拖动方向的曲线,当拖动距离增加时,它们的长度也会增加单击.

  • 在创建曲线期间重新选择第一个锚点时,应关闭路径

我也不确定如何解决上述问题,但这是我到目前为止编写的代码:

BPath:

[System.Serializable]
public class BPath
{

    [SerializeField, HideInInspector]
    List<Vector2> points;

    [SerializeField, HideInInspector]
    public bool isContinuous;

    public BPath(Vector2 centre)
    {
        points = new List<Vector2>
    {
        centre+Vector2.left,
            centre+Vector2.left,
            centre+Vector2.left,
            centre+Vector2.left
    };
    }

    public Vector2 this[int i]
    {
        get
        {
            return points[i];
        }
    }

    public int NumPoints
    {
        get
        {
            return points.Count;
        }
    }

    public int NumSegments
    {
        get
        {
            return (points.Count - 4) / 3 + 1;
        }
    }

    public void AddSegment(Vector2 …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine unity-editor

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

如何在 Unity 中使用 Google 帐户对用户进行身份验证?

Firebase 身份验证允许您使用来自其他登录提供商(Facebook、Twitter 等)的身份验证令牌进行身份验证。我的应用程序打算在 iOS 和 Android 上发布。我认为通过 Google 和 Apple 进行身份验证将使我能够覆盖所有潜在用户的 99%。到目前为止,我发现在 Unity 中使用 Google 对用户进行身份验证是一种可怕的体验。

https://firebase.google.com/docs/auth/unity/google-signin 有关 Google 身份验证的 Firebase 指南仅提供了有关如何将 Google 身份验证令牌交换为 Firebase 身份验证令牌的指南。与其他 Firebase 身份验证提供程序的页面不同,它甚至没有首先提示您如何获取 Google 身份验证令牌,甚至没有提到可能的插件。

https://github.com/googlesamples/google-signin-unity 网上有一个项目,可以让用户使用 Unity 项目登录 Google。但是,只有在项目已构建并在 iOS 或 Android 上运行时才可以登录,而在编辑器中则无法登录。特别是对于 iOS,这会让开发变得很累。一位乐于助人的用户发布了一个解决方法,以便它可以在编辑器中运行,但此解决方案似乎已过时。如果 Google 认真地支持 Google 登录,它早就会添加此功能。事实上,该项目已经一年多没有更新了。

https://github.com/playgameservices/play-games-plugin-for-unity Google 似乎正在积极为 Unity 开发 Google Play Games api。但是,它不再支持 iOS。此外,我的应用程序不是游戏,这可能会引起一些混乱。我希望用户能够使用任何 Google 帐户登录我的应用,而不仅仅是当前的 Play 游戏帐户。

我不知道该怎么做。我的搜索结果越来越少。Google 似乎不希望开发人员能够实施登录解决方案。与此同时,Apple 正在强行将他们的新登录解决方案作为应用商店批准的条件。我不知道该怎么办。有人可以帮忙吗?

android unity-game-engine ios google-signin unity-editor

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

除了在Unity3D中使用“资产/ Gizmos”以外,如何具有自定义脚本图标

我知道这个问题可能被问了很多次,但是通常回答是错误的。

我想要的是:

对检查器(例如,图2和图3)和ProjectView(例如,图1)中的特定组件/脚本使用自定义图标 替代文字

到目前为止,我所做的是:

对于每个应该带有图标的组件/类,我在文件夹中都有一个accroding Icon文件

Assets/Gizmos/<Path>/<To>/<Namespace>/<ClassName> icon
Run Code Online (Sandbox Code Playgroud)

Import Settigns设置TextureTypeEditor GUI and Legacy GUI

这工作正常..直到现在,我是实现该目标的唯一方法(请记住以下部分,我绝对不想要)。


但是,我想知道是否真的没有更好的方法来让每个脚本具有唯一的Icon文件。这使得项目/ UnityPackage不必要地庞大。同样,如果我重命名一个类,我也总是必须重命名相应的图标文件...这意味着感觉不对!

大多数Unity内置行为和组件都有一个唯一的图标。但是来自新PackageManager的外部Packages也具有内置图标,有时还会Gizmos文件夹,但是它没有遵循上述命名规则...因此,显然,为它们配置了图标。

因此,我的问题
有没有更好的方法来为脚本/组件提供这些图标?

最好编写脚本并重用一个单一的图标文件,而不是在多个不同名称的文件中具有相同的图标。

和/或还有/在哪里/如何为这些图标定义来自PackageManager的脚本?


!注意!我绝对不想要的是:

对于所有GameObjects附加了这些组件的对象,也要在SceneView中显示图标(例如,图4)。这是由于通过图5中的检查器选择了该脚本的图标(如本文中此处建议的所有建议,甚至Unity都建议使用Unity-Assign Icons)或使用OnDrawGizmosDrawGizmo

替代文字

更新资料

因为这个答案是建议的:我也知道我可以做到这一点,并通过GizmosSceneView 的设置将其关闭。但是想象一下,我喜欢25个不同的模块,每个模块都有不同的图标。我不想在每个项目的基础上逐一禁用SceneView设置中的Gizmos!甚至提供的脚本似乎也很庞大。反思将是我永远不会采取的最后手段。另外,我宁愿根本不让那些图标尽可能地显示为Gizmos,而不是全部禁用它们。

customization unity-game-engine unity3d-editor unity-editor

8
推荐指数
1
解决办法
847
查看次数

如何在CustomEditor中的嵌套ReorderableList中选择元素?

ReorderableList我的CustomEditor脚本中有一个.在drawElementCallback我添加了第二个嵌套ReorderableList.一切正常,我可以像这里一样在两个列表中添加元素

在此输入图像描述

但是你可以看到由于某种原因我不能选择内部元素,ReorderableList所以我也无法删除项目.

如何选择内部列表中的项目?


这里的类分解为基本示例

using System;
using System.Collections.Generic;
using UnityEditor;
using UnityEditorInternal;
using UnityEngine;

[Serializable]
public class SomeClass
{
    public string Name;
    public List<SomeClass> InnerList;
}

[CreateAssetMenu(menuName = "Example", fileName = "new Example Asset")]
public class Example : ScriptableObject
{
    public List<SomeClass> SomeClasses;

    [CustomEditor(typeof(Example))]
    private class ModuleDrawer : Editor
    {
        private SerializedProperty SomeClasses;
        private ReorderableList list;

        private void OnEnable()
        {
            SomeClasses = serializedObject.FindProperty("SomeClasses");

            // setupt the outer list
            list = …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine unity3d-editor unity-editor

8
推荐指数
1
解决办法
766
查看次数

如何获取当前目录的路径?(ScriptableObject、UnityEditor.AssetDatabase)

抱歉我的英语(谷歌翻译)。以下是在选定目录 (Assets/Resources/TestObject.asset) 中创建资产 (ScriptableObject) 的代码片段:

\n\n
[MenuItem("Assets/Create/Test Object")]\nprivate static void CreateTestObject()\n{\n    var testObject = ScriptableObject.CreateInstance<TestObject>();\n    AssetDatabase.CreateAsset(testObject, "Assets/Resources/TestObject.asset");\n    AssetDatabase.SaveAssets();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

如何获取我所在目录的路径?为了不手动对\xc2\xb4t 路径进行硬编码,而是将此 GameObject 保存在我调用该方法的同一文件夹中。

\n\n
\n\n

例如:

\n\n

1)我从Assets/TestFolder/TestFolder2调用该方法。

\n\n

2)并在同一目录中创建一个资产(TestObject)。并且不会在Assets/Resources中创建。

\n\n

综上所述,我需要通过菜单获取调用该方法的目录的路径(Assets/Create/Test Object)获取调用该方法的目录的路径。

\n\n
\n\n

另外:我可以在创建游戏对象后立即重命名它吗?与其他对象(脚本、文件夹等)一样

\n\n

预先感谢您的回答!

\n\n
\n\n

示例(屏幕截图): \n如何获取以红色突出显示的路径。我将通过菜单(创建/测试对象)调用该方法。在我选择的目录中(Assets/TestFolder/TestFolder2)。资产是在那里创建的。而不是在资产/资源中。我需要一个将字符串返回给我的方法:Assets/TestFolder/TestFolder2

\n

c# unity-game-engine unity-editor

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

如何调整一个克隆的形状/尺寸以影响场景视图中的所有其他克隆

我想通过调整一个来改变/调整场景视图中几个克隆对象的形状/尺寸.这个对象可以说是需要扩展的四元组或线条渲染器.例如,在场景视图中扩展(使用鼠标)一个游戏对象线渲染器时,所有其他克隆都会受到影响.我知道在克隆它之前调整一个对象的形状/尺寸要简单得多,也可以在预制件上进行此更改并应用于所有对象,但我需要看到动态更改,因为它们恰好使我的设计过程更多有效.我还想在需要时打开和关闭此功能.请看看我是如何在这个问题中创建克隆的 .

请注意,我不想在运行时实现此目的.

c# unity-game-engine unity-editor

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

Unity的IPreprocessBuildWithReport.OnPreprocessBuild抛出错误

我有一个小脚本,它在构建之前在 Resources 文件夹中创建一个文本文件,需要将其包含在构建中。所以我使用 Unity 的IPreprocessBuildWithReport编写了这个脚本:

using UnityEngine;
using UnityEditor;
using UnityEditor.Build;
using System.IO;

class MyCustomBuildProcessor : IPreprocessBuildWithReport
{
    public int callbackOrder { get { return 0; } }
    public void OnPreprocessBuild(UnityEditor.Build.Reporting.BuildReport report)
    {
        File.WriteAllText(
            Application.dataPath + "/Resources/version.txt",
            string.Format("{0}", PlayerSettings.Android.bundleVersionCode));

        AssetDatabase.Refresh();
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意AssetDatabase.Refresh();最后的声明。它确保 Unity 意识到更改并将更新的文件包含在构建中。现在,每当我更改bundleVersionCode并按构建时,Unity 都会按预期更新文件,但构建会失败并出现以下非常常见的错误:

在此输入图像描述

但是,如果我尝试以相同的方式第二次构建,bundleVersionCode则不会发生任何文件更改并且构建会成功。

所以我想这AssetDatabase.Refresh()并没有真正起作用OnPreprocessBuild(),或者我又做了一些明显愚蠢的事情?谁能建议一个解决方法?

编辑: 请忽略前两个错误,只是当我通过后缀从构建中排除文件时,Unity 不喜欢我~

build unity-game-engine unity-editor

5
推荐指数
0
解决办法
4837
查看次数

GUIStyle.hover 状态是否适用于 Unity 编辑器标签(或除 Button 之外的其他控件)?

我正在 Unity 中创建一个自定义编辑器窗口。当鼠标悬停在标签上时,我想让标签改变颜色。为了实现这一点,这似乎应该有效:

GUI.skin.label.hover.textColor = Color.red;
GUILayout.Label("My Label");
Run Code Online (Sandbox Code Playgroud)

但是当我用鼠标悬停在标签上时,标签仍然正常显示,没有任何影响。

我也尝试过手动创建 GUIStyles 并将它们作为参数传递给 GUILayout.Label,结果相同。normal但是,如果我更改状态,我会看到颜色发生变化。

hover标签是否支持状态,如果不支持,它支持哪些控件以及我如何找到这些信息?Unity 的文档中似乎没有。

c# unity-game-engine unity-editor

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

在Unity中为Script自动添加自定义编辑器的快捷方式

Assets 的 Unity 上下文菜单有各种有用的快捷方式,但没有快捷方式可以快速创建自定义编辑器。相反,如果我想创建一个自定义编辑器,我必须经历所有这些烦人的样板步骤:

  1. 创建Editor目录(如果还没有创建),然后转到正确的子目录
  2. Create-> C# Script(实际上应该被称为C# Component Script
  3. 删除所有的MonoBehavior东西
  4. 附加Editor到类名
  5. 添加 using UnityEditor
  6. 添加CustomEditor属性
  7. 继承自 Editor

......在能够真正开始写我的东西之前......

某处有捷径吗?

c# unity-game-engine unity-editor

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