Tag: unity3d

在Unity 5中从本地服务器创建和下载资产包

请不要向我推荐我尝试过的Unity3d官方链接 ,它并不全面,也没有提供必要的细节。 我是新手,将在Unity3d中创建AssetBundles。 到目前为止,在统一官方文档的帮助下,下面给出了什么。 /// /// AssetBundles are exported from the editor using script code. (This is similar to the 4.x approach.) /// The following script exports AssetBundles. /// public class AssetBundleCreate { [MenuItem(“Assets/Build AssetBundles”)] static void BuildAllAssetBundles() { Debug.Log(“asset build”); BuildPipeline.BuildAssetBundles(“Assets/AssetBundles”); } [MenuItem(“Assets/Get AssetBundle Names”)] static void GetNames() { var names = AssetDatabase.GetAllAssetBundleNames(); foreach(var […]

统一3.3,在物体上创造局部引力

使用Unity 3.3。 visual studio express 2010.和c#。 我需要创建一个将附加到对象的脚本。 此对象将创建自己的重力场,以吸引 – 排斥环境中的所有对象。 不幸的是,由于统一物理,我不知道该如何做到这一点。 我需要该物体覆盖所有其他物体吗? 我是否支持统一主要物理学? 这项工作怎么样? 或者,当它是一个简单的脚本时,我是否过于复杂? 不,我不想添加一个rigig体,因此物体随着重力下降,它必须创建更强大的重力。 干杯 UPDATE! public float radius = 5.0f; public float power = -20f; void Start () { //GameObject gravityObject = GameObject.FindGameObjectWithTag(“GravitySwell”); //gravSlime = gravityObject.transform; } void Update () { Vector3 explosionPos = transform.position; Collider[] colliders = Physics.OverlapSphere(explosionPos, radius, 3); foreach […]

Unity3d中的multithreading脚本调用

我试图在Unity3d中实现multithreading脚本执行,但似乎Unity库没有办法提供,我们必须使用Mono提供的System.Threading。 但他们提到Unity Scripting不是线程安全的。 我可以使用System.threading或其他独立于平台的API在Unity3D中安全有效地实现multithreading吗? 另外,我如何确保脚本并行运行? 一个例子或链接将受到高度赞赏。 问候

如何用弧形制造抛射物

我有一门用抛物线射出子弹的大炮。 现在,当我发射子弹时,它保持与从大炮发射时相同的旋转。 我如何制作它以使子弹在空中传播时沿弧线旋转? 我尝试了以下作为在子弹上运行的脚本 图表1 public class PointingBehaviour:MonoBehaviour { private Rigidbody rb; private void Awake() { rb = GetComponent(); } public void Update() { transform.up = rb.velocity; } } 而且效果相当好。 但是我看到物体存在的第一帧上有轻微的闪烁(我认为这是因为此时速度仍为0)并且一旦物体撞击地面,物体就会无法控制地旋转。 我让它在开始时停止闪烁,并通过执行以下操作停止旋转 public class BulletController : MonoBehaviour { private Rigidbody _rb; private bool _followArc; private bool _firstFrame; private void Start() { _rb = GetComponent(); _firstFrame […]

RigidBody2D冻结X位置

我想知道是否有一种方法可以使用Unity的RigidBody2D模拟以下代码行,而不是使用普通的RigidBody。 rigidbody.constraints = RigidbodyConstraints.FreezePositionX; 我希望我的球员x位置在碰到某些东西时冻结。 虽然我可以使用上述内容,但我需要将所有2D碰撞重新设计为3D碰撞。 我宁愿避免的痛苦。

Debug.DrawLine没有显示在GameView中

我正在研究2D Unity应用程序,我遇到了一些奇怪的行为。 这段代码工作得很好。 Debug.DrawLine(button1.transform.position, button2.transform.position, Color.green); 当我运行应用程序时,我在“场景”视图中看到一条绿线。 但是当我有以下行时,游戏视图中没有任何内容。 Physics2D.Linecast(button1.transform.position, button2.transform.position); 我很困惑Unity如何在这两个按钮之间画一条线,但由于某种原因,它只是在游戏视图中没有这样做。 知道我怎么解决这个问题吗?

在Unity应用程序中为Hololens显示设备使用许可对话框

我正在研究在Unity上构建Hololens的应用程序。 我的需求是使用Bluetooth Service Port Profile从手机(android或wp – 并不重要)获取一些信息。 选择的方法是使Hololens充当蓝牙主机。 所以我正在使用RfcommServiceProvider 。 简化样本: _rfcommProvider = await RfcommServiceProvider.CreateAsync(RfcommServiceId.SerialPort); _socketListener = new StreamSocketListener(); _socketListener.ConnectionReceived += OnConnectionReceived; await _socketListener.BindServiceNameAsync(_rfcommProvider.ServiceId.AsString(), SocketProtectionLevel.BluetoothEncryptionAllowNullAuthentication); _rfcommProvider.StartAdvertising(_socketListener, true); 和事件处理程序如: private async void OnConnectionReceived(StreamSocketListener sender, StreamSocketListenerConnectionReceivedEventArgs args) { _socket = args.Socket; … } 接下来是问题:当客户端设备尝试连接时 – 用户需要为此应用/设备对授予权限。 如果在hololens上的UWP应用程序中使用此代码,则会出现系统同意对话框。 但是当它是Unity应用程序时 – 它只是试图在事件处理程序中获取套接字。 要修复此用户需要关闭应用程序,请转到设置>隐私>其他设备,然后打开设备/应用程序对的切换按钮(此按钮仅在首次尝试连接到Hololens应用程序后出现)。 所以问题是:在Unity应用程序中是否有一种明确的方式或一些解决方法要求用户提供此权限?

BUG触发if和else同时Unity C#

我正在使用最新版本的Unity来体验一个非常奇怪的错误,IDE是visual studio 2015社区。 我有一个按钮,当它被点击时触发一个函数,并发送一个短字符串作为参数。 在方法中我首先检查字符串是空还是空,并且我运行一些代码,如果是这种情况,我运行一些其他代码(明显的标题)..问题是参数既不是null也不是空但是第一个条件正在被触发,我100%肯定,因为我记录了这个Debug.Log(“elementType : ” + elementType + ” result : ” + string.IsNullOrEmpty(elementType));的操作结果Debug.Log(“elementType : ” + elementType + ” result : ” + string.IsNullOrEmpty(elementType)); 它基本上打印fire.. false也我运行调试器以确保参数不是空的但是在if条件被触发后它甚至更奇怪了else语句也被触发了! 这是我展示问题的video: http : //screencast.com/t/iRtXtQaMDh8K 。 这是debug.log的截图: http : //prntscr.com/bv0xsg 我已经尝试重新启动Unity和visual studio,但没有运气。 我也对这个方法设置了一个lock ,以防万一其他的线程在某种程度上同时访问同一个方法,这肯定不是再次没有运气的情况。

从Texture2D创建UI图像

我正在开发一个实时流应用程序,它接收JPEG图像作为字节数组,并使用UI.Image其显示在屏幕上。 它工作正常,但我正在进行优化 ,几乎没有问题 。 目前,我在下面的代码将字节数组转换为Texture2D然后从Texture2D 创建一个Sprite ,然后将该Sprite分配给UI.Iamge以在屏幕上显示。 Texture2D camTexture; Image screenDisplay; public byte[] JPEG_VIDEO_STREAM; bool updateScreen = false; //初始化 JPEG_VIDEO_STREAM = new byte[20000]; camTexture = new Texture2D(Screen.width, Screen.height, TextureFormat.RGB24, false); //在Update函数中运行的主代码 if(updateScreen){ camTexture.LoadImage(JPEG_VIDEO_STREAM); Sprite tempSprite = Sprite.Create(camTexture, new Rect(0, 0, camTexture.width, camTexture.height), Vector2.zero, 0); screenDisplay.sprite = tempSprite; updateScreen = false; } 上面的代码目前只执行3个步骤来显示图像到屏幕。 byte array – […]

阻止在编辑器中添加组件

我正在寻找一种方法来禁用在Unity编辑器中附加我的MonoBehaviour组件的可能性。 所以我不希望我的组件出现在用户可见的任何地方。 原因是我使用AddComponent()从脚本手动附加此组件。 所以这是一个更方便的问题,我只是不希望用户认为他必须手动添加我的组件才能使我的插件正常工作。 (无论如何,这样做不会造成任何麻烦。再一次,这只是方便) 精度 我正在编写一个库(dll插件),所以我不能使用不同于我的组件命名文件的技巧,但这正是我正在寻找的效果。 我还试图简单地将我的类作为内部,因为它实际上是什么,程序集应该是唯一可以访问此组件的程序集。 但是,我害怕从MonoBehaviourinheritance,即使有内部类,也可以在编辑器中使用该组件… HideInInspector属性似乎不适用于类。 我使用RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.AfterSceneLoad)从静态方法调用AddComponent ,因此我不会依赖任何其他行为。 相当挑战,如果我们找到答案,那将是奢侈品。 任何的想法? 非常感谢你