我正在使用Unity创建一个HoloLens应用程序,它必须从REST API获取数据并显示它.我目前正在使用WWW数据类型来获取将从Update()函数调用的协程中的数据和yield return语句.当我尝试运行代码时,我从API获取最新数据,但当有人将任何新数据推送到API时,它不会实时自动获取最新数据,我必须重新启动应用程序以查看最新数据.我的代码:
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
using System;
using Newtonsoft.Json;
using System.Collections.Generic;
using System.IO;
public class TextChange : MonoBehaviour {
// Use this for initialization
WWW get;
public static string getreq;
Text text;
bool continueRequest = false;
void Start()
{
StartCoroutine(WaitForRequest());
text = GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
}
private IEnumerator WaitForRequest()
{
if (continueRequest)
yield break;
continueRequest = true;
float requestFrequencyInSec = 5f; //Update after every 5 …Run Code Online (Sandbox Code Playgroud) 我想从检查员点击按钮发送多个参数?
Unity不允许这样做,我怎样才能做到这一点?还有其他方法吗?有几十个按钮,我使用相同的方法为所有按钮,但发送不同的参数,现在我需要发送多种类型的参数.想不通怎么样?
我最近遇到了UI问题.我打开了一个新的2D项目并使用带有Image组件的GameObject创建了一个画布.然后我通过右键单击添加了一个精灵Assets > Create > Sprites > Circle.这为我的Assets文件夹添加了一个圆形精灵.
圆形精灵被导入为纹理类型的精灵.
其他形状也会出现此问题,例如三角形.
我正在使用Unity 5.6.0b9 Personal.构建目标是PC,Mac,Linux Standalone.
我可能错过了很简单的事情.任何帮助表示赞赏!
我们尝试了不同的方法将 UI 对象移动到另一个场景,但我们失败了。对象在画布中。
方法 1:我们使用了 LoadLevelAdditive,但是从第一个场景中移动了所有对象,而没有通过 Canvas 及其元素。
方法 2:我们使用 DontDestroyOnLoad。我们需要更改 Canvas 上的元素。DDOL 保存了场景中的最后一个位置,但我们根本无法更改对象。
你能得到一些建议吗?
谢谢。
简短问题:
.controler, .anim, .assetUnity项目中文件类型的用途是什么.
重要说明: 此问题的目的是通过它的文件类型调查Unity3d项目结构.
我不是在问如何为git准备我的项目.我对它们的扩展名的文件的目的和行为感兴趣,在摘要#1中查找文档.
简介如何出现此问题:
我正在使用unity3d,当我运行git status后同步时,我得到了一长串修改/删除的文件,我没有触及.这些文件有下一个扩展:*.meta, *.controller, *.anim, *.assets
经过长时间的谷歌搜索与不同的请求后,我发现足够好的信息只会在文件中*.meta丢失或重复时可能发生的文件和冲突.但其他文件扩展名在谷歌的回复中没有得到很好的体现.我只能通过扩展来猜测这些文件的作用,但我更喜欢它.guid*.meta
摘要:
您能否帮我找到有关Unity3d项目中具有下一个文件扩展名的文件的用途,结构和行为的信息.
1)*.metaUnity3d中的文件是什么?
回答#1: 此文件类型包含有关无法存储在资产内的资产的数据.每个资产都有自己的*.meta文件.
https://blog.forrestthewoods.com/managing-meta-files-in-unity-713166ee3d30
2)什么是.*.controllerUnity3d中的文件?
3)*.animUnity3d中的文件是什么?
4)*.assetUnit3d中的文件是什么?
我必须双击“返回”键才能提交值!它在 2 小时前工作正常(我只需要按回车一次),但后来我重新启动了 Unity,现在我需要双击“回车”才能提交值。
更新 #2
我有一个脚本附加到包含输入字段的画布。代码如下:-
public class Example: MonoBehaviour {
public InputField inputField;
void Start () {
}
void Update () {
HandleUserInput ();
}
void HandleUserInput()
{
if (inputField.isFocused && inputField.text != "" && (Input.GetKey (KeyCode.Return) || Input.GetKey(KeyCode.KeypadEnter))) {
Debug.Log ("Pressed");
//Do stuff
inputField.text = ""; //Clear Inputfield text
inputField.ActivateInputField(); //Re-focus on the input field
inputField.Select ();//Re-focus on the input field
}
}
Run Code Online (Sandbox Code Playgroud)
当我播放场景并在字段中输入并按第一个返回时,日志不会显示任何内容,但是当我再次按下它时它会显示“已按下”。
更新 #3
我找到了某种解决方案,如果我删除“inputField.isFocused”输入字段将检测到第一个“返回”键。但是,在我的情况下,如果输入字段中有一些文本,那么用户单击场景中的任何其他地方然后按 Enter,输入字段将提交它。
请指教
嗨,我正在开发一个统一的游戏,我需要在iOS中测试这个游戏.对于特殊情况,我需要测试控制器的输入触摸,但这需要很长时间.
当我在脚本C#中更改一些代码行时,我必须重新构建iOS游戏,之后我必须构建并运行Xcode项目进行测试并在我的iPhone上运行游戏.
这个过程需要很长时间,所以问题是如果有一些方法可以加速这个过程?
这是我的脚本,我试图制作"",以防它不是其中一个案例:
using UnityEngine;
using System.Collections;
public class DetectPlayer : MonoBehaviour {
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.name == "Platform")
{
Debug.Log("Touching Platform");
}
else
{
Debug.Log("");
}
}
void OnTriggerEnter(Collider other)
{
if (other.gameObject.name == "OnTop Detector")
{
Debug.Log("On Top of Platform");
GameObject findGo = GameObject.Find("ThirdPersonController");
GameObject findGo1 = GameObject.Find("Elevator");
findGo.transform.parent = findGo1.transform;
}
else
{
Debug.Log("");
}
}
}
Run Code Online (Sandbox Code Playgroud)
但这""不起作用.在游戏运行时,它不会从控制台中删除文本.而且当我停止游戏并再次运行它时,它会继续显示Debug.Log的最后一个文本.
如果在我的脚本中没有发生If,我想清除它.
我看到了这个答案:
但我不确定这是否是我需要的以及如何使用它.制作一个新剧本?
还有错误呢.如果我清除登录控制台,它会删除erorrs,如果有一些?
在这个屏幕截图中,我触摸平台然后离开它后处于状态,但文本仍然存在于控制台日志中:
我对编码很新,我仍然在努力发展思维逻辑,以帮助我创建我想要的游戏解决方案.目前,我正在Unity尝试创建一个2D GameObject,这是一个隐藏秘密门的墙.当玩家GameObject触发它时,我希望GameObject淡出(大约90%),露出后面的空间和隐藏的门.
到目前为止,我已经设法弄清楚如何在触发器上使"秘密墙"GO处于非活动状态,因此它会消失,但这并不会产生我想要的视觉效果.正如我所说,我仍在努力开发编码器的思维方式,所以虽然我已经做了很多研究来解决这个问题,但很多结果我都不太明白.
这是我的代码:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SecretDoor1 : MonoBehaviour {
void OnTriggerEnter2D (Collider2D SecretDoorTrig) {
if (SecretDoorTrig.gameObject.tag == "Player") {
GetComponent<SpriteRenderer> ().enabled = false;
}
else {
GetComponent<SpriteRenderer> ().enabled = true;
}
}
void OnTriggerExit2D (Collider2D SecretDoorTrig) {
if (SecretDoorTrig.gameObject.tag == "Player") {
GetComponent<SpriteRenderer> ().enabled = true;
}
else {
GetComponent<SpriteRenderer> ().enabled = false;
}
}
}
Run Code Online (Sandbox Code Playgroud) 您可以使用 Transform 属性在 Unity 中旋转任何可视对象。一个例外是LineRenderer. 您不能使用 transform 属性移动或旋转它。
LineRenderer与SetPositionorSetPositions函数一起移动,因此我设法通过变换位置属性使其可移动,但我也无法使其旋转。
下面是我用来使它可移动的代码。
public Vector3 beginPos = new Vector3(-1.0f, -1.0f, 0);
public Vector3 endPos = new Vector3(1.0f, 1.0f, 0);
Vector3 beginPosOffset;
Vector3 endPosOffset;
LineRenderer diagLine;
void Start()
{
diagLine = gameObject.AddComponent<LineRenderer>();
diagLine.material = new Material(Shader.Find("Sprites/Default"));
diagLine.startColor = diagLine.endColor = Color.green;
diagLine.startWidth = diagLine.endWidth = 0.15f;
diagLine.SetPosition(0, beginPos);
diagLine.SetPosition(1, endPos);
//Get offset
beginPosOffset = transform.position - diagLine.GetPosition(0);
endPosOffset = transform.position - diagLine.GetPosition(1);
}
void Update() …Run Code Online (Sandbox Code Playgroud)