Tag: unity3d

从C插件向Unity3D发送字节数据的任何正确方法?

这里只是一个好奇的问题。 当您在iOS平台上为Unity编写插件时,插件具有有限的本机到托管回调function(从插件再到Unity)。 基本上这个文档: iOS插件Unity文档 说明你能够回拨的函数签名是这样的: 只能从本机代码调用与以下签名对应的脚本方法:function MethodName(message:string) C中定义的签名如下所示: void UnitySendMessage(const char * obj,const char * method,const char * msg); 所以这几乎意味着我只能将字符串发送回Unity。 现在在我的插件中,我使用protobuf-net来序列化对象并将它们发送回Unity以进行反序列化。 我已经让这个工作,但通过一个解决方案我觉得很丑陋,并不是很优雅: Person* person = [[[[[Person builder] setId:123] setName:@”Bob”] setEmail:@”bob@example.com”] build]; NSData* data = [person data]; NSString *rawTest = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]; UnitySendMessage(“GameObject”, “ReceiveProductRequestResponse”, [rawTest cStringUsingEncoding:NSUTF8StringEncoding]); 基本上我只是将字节流编码为字符串。 在Unity中,我然后获取字符串的字节并从那里反序列化: System.Text.UTF8Encoding encoding=new System.Text.UTF8Encoding(); Byte[] bytes = […]

视觉工作室“不一致的行结尾”

我是VS的新手,从未真正使用过它。 喜欢其他IDE,但是当它在VS和MonoDevelop之间折腾时,我被告知VS是更好的选择。 我将它设置为Unity中的默认编辑器,它经常给我这个消息 此文件中的行结尾不一致。 你想要标准化结局吗? 然后它给了我一个列表,如 Windows(CR LF) Macintosh(CR) Unix(LF) 我怎么能阻止它出现呢?

Unity无法设置ActiveScene

我正在切换场景: SceneManager.LoadScene(“Scene2”); Debug.Log(“Current scene: ” + SceneManager.GetActiveScene().name); 调试说: Current scene: Scene1 我也试过这个: SceneManager.LoadScene(“Scene2”); StartCoroutine(WaitUntilEndOfFrame()); Debug.Log(“Current scene: ” + SceneManager.GetActiveScene().name); private IEnumerator WaitUntilEndOfFrame() { yield return new WaitForEndOfFrame(); } 仍然说 Current scene: Scene1. 我试过SetActiveScene(SceneManager.GetSceneByBuildId(1)); 我已经尝试将其作为协程启动,我已经尝试过并等待5秒钟。 仍然是ActiveScene是Scene1,即使Unity中的场景发生了变化。 什么都没有改变活动场景……

Visual Studio中缺少Unity Help API参考

我一直在使用Visual Studio 2017 for Unity。 当我尝试使用在线文档的快捷方式时(您选择一个单词,按快捷键并显示有关所选单词的在线文档),它似乎不起作用。 当我在Debug – > Options – > Environment – > Keyboard中查找它时,没有Help.UnityAPIReference命令。 我在Unity中通过外部工具选项链接了VS17。 我该怎么办? 我应该重新安装VS17吗? 如果是这样,怎么样? 因为它似乎与Unity紧密集成,如果我卸载,它会搞乱Unity设置吗?

其他脚本访问时Unity方法不起作用?

我已经制作了一个统一的多人游戏,并且有一个ac#script。 它包含一个方法public void UpdatePlane来更新对手的飞机。 在这个方法中,我想改变一个值( private bool oppdead为true或者如果只是private bool oppdead因为任何原因而无法工作, int opponentisdead是1 )或者如果我根本不能更改那里的值甚至只是调用方法makeoppdead()来改变那里的价值观。 但究竟那些东西在他们应该的时候不会改变。 我知道在UpdatePlane方法中,死亡变为真,我收到Log (“oppplayer dead is true”)但是值没有改变,方法makeoppdead()没有执行,我没有得到日志(“method was called”) 。 令我惊讶的是,另一方面,它可以毫无问题地改变opponentPrefab Prefab。 这是代码: public GameObject opponentPrefab; public Rigidbody2D oppPlane; private bool _multiplayerReady; private string _myParticipantId; private bool oppdead; int opponentisdead = 0; bool boolopponentisdead; float opponentdistance; float distancex; float distancey; float distance; public […]

统一成员修饰语公共必须先于

我已经解决了这个问题,但是当事情变得更加疯狂时,我意识到尝试实现这个目标是多么愚蠢,因为它最终显然没有任何好处。 如果你有类似的问题,请随意查看这个问题,也许你会学到一两件事。 Idk¯\ _(ツ)_ /¯ 人们在我这个网站上问过这个问题,但是这些都不是同一个问题。 我确定在检查代码时我可能错过了一些东西,但我无法弄清楚它是什么。 现在Unity正在困扰我,据说我不会把公共修饰符放在正确的位置,即使它正是应该的位置,从我所看到的。 让我快点告诉你…… Unity返回给我的错误: Assets\saveFiles.cs(15,1): error CS1585: Member modifier ‘public’ must precede the member type and name 我的代码 (我在这里发布这个很长的块有点疯狂,只是忽略那些我很难删除的评论。这就是我进一步开发的时候。) using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.EventSystems; using System.IO; using System.Windows.Forms; using System.Runtime.InteropServices; using System.Drawing; using System.Security.Permissions; // Allows permission requests from within script. VERY IMPORTANT. using System.Security.AccessControl; // […]

团结拖放

如何在Unity中进行C#拖放(用于预制)脚本? 使用事件系统或任何其他方式。 帮助我。

Unity JSON将数据添加到现有的json数据

我正在为多个数据库设置创建索引。 每次创建新数据库时,我都需要一个索引,以便该人可以连接到他们想要处理的数据库。 将索引保存在json文件中后,一旦我再次加载它,如何在不删除现有数据的情况下添加它? 我看过的大多数教程都告诉你如何保存和加载但不能用现有数据做什么。 谢谢! 虽然我正在使用JSONUtility,因为这是一个非常简单的操作,但我不反对任何其他库的建议。

播放时如何在编辑器中打开/关闭统计面板?

我想在播放时通过C#脚本打开/关闭此面板。 这可能吗? 没有为此找到任何编辑器API函数。

Unity3D:根据当前位置生成对象 – 在同一位置放置到canvas上

我有一个物体,当它被摧毁时会留下一些东西。 //Spawn object at point GameObject bonusDrop = (GameObject)Instantiate(bonusItem,target.transform.position, Quaternion.identity); //Set the transform to the canvas (without this line the position is correct) bonusDrop.transform.SetParent(canvas.transform); //object is completely off 我想将它设置为canvas,因为它是作为UI元素 如果我没有设置父对象,则对象最终处于正确的位置(但如果我没有设置父对象,则UI元素将无法按预期工作)。 我希望能帮助你解决这个问题。 我不想这么说,但我觉得解决方案很简单,我无法得到它=(