Tag: unity3d

Unity:无法修改`UnityEngine.Transform.position’的值类型返回值

我目前正在尝试使用从JavaScript转换的代码将我的相机锁定到我在Unity3D中制作的地图: transform.position.z = Mathf.Clamp(transform.position.z, zmin, zmax); transform.position.x = Mathf.Clamp(transform.position.x, xmin, xmax); 但Unity在编译时继续返回以下错误: error CS1612: Cannot modify a value type return value of ‘UnityEngine.Transform.position’. Consider storing the value in a temporary variable. error CS1612: Cannot modify a value type return value of ‘UnityEngine.Transform.position’. Consider storing the value in a temporary variable.

将Texture2D转换为OpenCV Mat?

在Unity中有一篇关于将OpenCV cv::Mat转换为Texture2D的post ,我提供了一个效果很好的答案。 现在,我正试图做相反的事情,但现在已经坚持了几个小时。 我想将Unity的Texture2D转换为OpenCV cv::Mat以便我可以在C ++端处理Texture。 这是我想要转换为cv:Mat Unity项目中的原始Texture2D : 这是将它转换为cv:Mat后的样子cv:Mat : 它看起来很褪色。 我并不担心图像的旋转 。 我可以解决这个问题。 只是想知道为什么它看起来如此褪色。 还使用cv::imwrite保存图像以用于测试目的,但问题也出现在保存的图像中。 C#代码 : [DllImport(“TextureConverter”)] private static extern float TextureToCVMat(IntPtr texData, int width, int height); unsafe void TextureToCVMat(Texture2D texData) { Color32[] texDataColor = texData.GetPixels32(); //Pin Memory fixed (Color32* p = texDataColor) { TextureToCVMat((IntPtr)p, texData.width, texData.height); } } public Texture2D […]

在团结3D中反转动画

我有一个带动画的FBX对象。 该对象是一个带有动画的框,用于打开。 我想要做的是当用户点击一个按钮时,该框将打开(播放打开的动画),当再次单击该按钮时,该框将关闭(向后播放打开的动画)。 正在播放开始动画时,我再次单击该按钮,开始动画停止,框开始关闭,工作正常。 问题是,当动画完成(打开)然后我单击按钮关闭时,动画不会播放,它只是跳转到没有动画的关闭框。 这是我的代码: public class ClickBtn : MonoBehaviour { public GameObject box = null; bool reverse = false; private void OnMouseDown() { Debug.Log(reverse); if (!reverse) { box.animation[“Take 001”].speed = 1; } else { box.animation[“Take 001”].speed = -1; } reverse = !reverse; box.animation.Play(“Take 001”); } }

2048年的游戏开发者是如何让他们的瓷砖顺利移动的? 看下面的详细信息

我已经制作了2048游戏的完整副本,但是我通过传送移动了瓷砖(没有平滑移动的瓷砖,就像在原始游戏中一样) 我使用以下代码来移动瓷砖的smothness。 //GameManager script void MoveRight () { //some code .. AnimateTileMovement (newPosition); // newposition is the position to whihc the tiles is going to move //some code which i need to execute (ONLY AFTER MY COMPLETE MOVEMENT OF TILE) // BUT AS SOON AS TileMovement return its first null this code execute which is […]

Unity3d – C# – 如何备份数组的值?

我在脚本(C#)中定义了一个包含67个元素的数组。 每个元素都是我定义的类的对象,包括一些变量。 如下: // the Definition of the array public Pack[] packsInfo; // the class [Serializable] public class Pack { public int number; public int angle; public float zPosition; public float beatCaseDistance; public float gunDistance; } 然后,我在Inspector中分配所有值。 像下面: 所以……如果我突然改变任何值,或者更糟糕的是,(因为任何原因而改变了值,比如更改类参数或任何东西),那么我必须花费数小时来设置所有值。 所以我想打印文本或文件中的所有值并保存它们。 以后再恢复它们。 我想要一个备份解决方案。我想做它编程。 (我不想手动编写;)。浪费时间。 )

如何在Visual Studio 2017 for Unity中启用intellisense

我刚开始使用Unity编程。 我最近在Zorin 12上安装了Visual Studio Code 2017.这是一个很好的界面,但是没有自动完成! 我意识到Ctrl + Space会弹出一些建议,但有两个问题需要我解决: 建议不会自动弹出 这些建议是基于我已经输入的代码中的冗余,而不是基于Unity未开发的function的建议。 例如,如果我正在使用Transform对象,我希望它能够弹出我可以使用的所有可能变量,而不仅仅是我之前使用过的变量。 我得到的两个错误可以在http://sofzh.miximages.com/c%23/AwHl4ef.png上看到 谢谢您的考虑。

如何通过统一的wwwform传递json

我是团结的新手。 我想发送一个邮件请求,其中包含以下json数据 **url** = “http://index.php” **sampple json** = {“id”:”100″,”name”:”abc”} 我正在使用C# 任何人都可以为我提供解决方案吗?

如何让Unity 3D中的对象保留在场景中并且不会重新创建

嗨,我正在努力找到一种在Unity 3D中播放背景音乐的好方法。 我希望音乐能够通过场景加载持续播放。 不要在加载时销毁很好并且有效,但每次加载相同的场景时,它都会制作另一个音乐游戏对象,因为场景本身中有游戏对象。 我怎样才能解决我的问题? 我是一个“初学者”(有点),所以我想要我能理解的代码。 谢谢!

Unity:需要在返回池时重置池化对象。 也许使用ScriptableObject?

我最近一直在尝试统一对象池,以便一次加速几个游戏对象的实例化。 但是,由于这些是相当复杂的对象,我需要在它们返回池中时重置它们。 我读到使用ScriptableObject可能是存储默认值以便轻松重置的好方法。 但为了做到这一点,我需要在运行时加载一个新的ScriptableObject来存储对象的实际值。 所以在伪代码中,我有一个带有public MyScriptableData data和public MyScriptableData defaults 1)使用默认的ScriptableObject data = defaults;创建新的池化对象data = defaults; ; 2)在对象的生命周期内做更改脚本对象值的东西 3)取消激活,然后将池化对象返回池,将scriptableObject重置为其默认值( data = defaults;再次)。 我有3个主要问题: A)我不确定如何实际实现这一点。 在我看来,在步骤2中,默认值将被更改。 因此,重置为默认值将不起作用。 我考虑使用创建我的脚本对象的新实例 data = ScriptableObject.CreateInstance(); 但是,我将如何从默认值中复制默认值,确保永远不会更改默认值? 我希望默认值可以在Unity编辑器中作为资产进行编辑。 B)如果我使用CreateInstance,性能会不好? 我正在做这个对象池的全部原因是为了降低对象实例化的性能成本。 我不想通过实例化脚本化对象来重新引入慢速代码。 C)这种方法好吗? 还是有更好的方法在返回池之前重置对象? 编辑基于一些答案:我已经有一个具有很长字段列表的设置,然后将这些字段的默认值存储在字典中。 但我发现每次我想添加/更改/删除字段时,我都必须在几个位置更改代码 ATTEMPTED SOLUTION(但错误,见下文):我为ScriptableObject创建了一个扩展方法: using UnityEngine; using System.Reflection; public static class ScriptableObjectExtension { public static T ShallowCopy (this T […]

在Unity中动态更改对象的速度

我需要一个物体根据动态时间上下移动。 确切的位置存储在名为Timings的List()中。 这将包含排序的条目,如0.90 1.895 2.64 3.98 …这些时间是相对于音乐的播放,所以它们可以与TheMusic.time进行比较。 (TheMusic是我的AudioSource)。 现在(见下面的代码),它使用moveSpeed静态上下移动。 我怎样才能这样做,或者在预定义的时间达到顶点和底点? 当它到达时间列表的末尾时,运动应该停止。 public class Patrol : MonoBehaviour { public Transform[] patrolPoints; //contains top and bottom position public float moveSpeed; //needs to be changed dynamically private int currentPoint; // Initialization void Start () { transform.position = patrolPoints [0].position; currentPoint = 0; } // Update is called once […]