Tag: unity3d

循环冻结Unity3D中的游戏

我一直在与while循环斗争,因为他们几乎没有为我工作。 它们总是导致我的Unity3D应用程序冻结,但在这种情况下我真的需要它才能工作: bool gameOver = false; bool spawned = false; float timer = 4f; void Update () { while (!gameOver) { if (!spawned) { //Do something } else if (timer >= 2.0f) { //Do something else } else { timer += Time.deltaTime; } } } 理想情况下,我希望那些if语句在游戏运行时运行。 现在它崩溃了程序,我知道它是while循环,这是问题,因为它随时冻结,我取消注释。

“if(!myobject)”是否与“if(myobject == null)”相同?

今天我在Unity项目中遇到了一些有趣的C#代码: MyScript ms = new MyScript(); //MyScript derives from MonoBehaviour ms = null; if(!ms) { Debug.Log(“ms = “+(ms==null)); } 它看起来似乎表现如下: if(ms == null) { /*Do Stuff*/ } 但这真的是一回事吗? 我还没有找到任何关于此的文档。 有没有理由不使用较短版本或更喜欢其中一个?

ARCore for Unity保存相机图像

使用ARCore for Unity,尝试将Frame.CameraImage.AcquireCameraImageBytes()保存为图像并扫描图像以查找QR码。 但转换后的图像不是实际比例,而是重复,因此无法正确扣除QR码。 这是我的代码 void Update() { using (var image = Frame.CameraImage.AcquireCameraImageBytes()) { if (image.IsAvailable) { byte[] m_EdgeImage = null; Color32[] pixels = null; IParser Parser = new ZXingParser(); if (_texture == null || m_EdgeImage == null || _texture.width != image.Width || _texture.height != image.Height) { _texture = new Texture2D(image.Width, image.Height, TextureFormat.RGBA32, false, false); […]

当试图从屏幕边缘反弹时,物体会卡住,我这样做错了吗?

public class AsteroidMovement : MonoBehaviour { public Vector2 speed; public Vector2 direction; private Vector2 movement; private Vector3 TopScreenBound; private Vector3 BottomScreenBound; // Use this for initialization void Start() { TopScreenBound = Camera.main.ViewportToWorldPoint(new Vector3(0f, 1f, 0f)); BottomScreenBound = Camera.main.ViewportToWorldPoint(new Vector3(0f, 0f, 0f)); } // Update is called once per frame void Update() { if (gameObject.transform.position.y >= […]

继续在不同的场景中播放音频

在我的Unity项目中,有不同的菜单,每个菜单都是不同的场景。 每个场景都有用于控制音乐的按钮。 public void musicToggle(GameObject Off){ if (PlayerPrefs.GetInt (“Music”) == 1) { musicPlayer.Stop (); Debug.Log (“Stop 2”); PlayerPrefs.SetInt (“Music”, 0); Off.SetActive(true); } else { musicPlayer.Play (); Debug.Log (“Play 2”); PlayerPrefs.SetInt (“Music”, 1); Off.SetActive (false); } } 这是我的musicTooglefunction。 在每个场景中音乐重新开始,在每个场景中,当我想打开/关闭音乐时,我点击一个部署此代码的按钮。 但是,我不希望音乐重新开始每一个场景变化,我希望它能够恢复,我希望能够控制每个场景中的音乐(打开/关闭)。 我怎样才能做到这一点 ?

StartCoroutine被调用了很多次(C#Unity)

我正在Unity中创建一个弹出菜单选项。 现在我的问题是我在无效更新中做的协程被调用了很多次。 我的意思是在我的Unity控制台上,Debug.Logs正在递增。 它应该是正确的,因为它已经是协程。 有些人可以帮助我理解更多的协程并帮助我解决我的小问题。 这是我的代码: [SerializeField] GameObject Option; [SerializeField] Button btn,btn2; [SerializeField] GameObject open, close; [SerializeField] GameObject[] opt; bool startFinding = false; void Start() { Option.SetActive(false); Button popUp = btn.GetComponent(); Button popUp2 = btn2.GetComponent(); popUp.onClick.AddListener(PopUpOption); popUp2.onClick.AddListener(ClosePopUp); } void Update() { if (startFinding) { StartCoroutine(GameOptions()); } } IEnumerator GameOptions() { //Get All the tags opt […]

在一个对象中绘制一条线c#

您好我正在使用此代码绘制一个跟在对象后面的行 Debug.DrawLine(new Vector3(gameObject.transform.position.x, gameObject.transform.position.y, gameObject.transform.position.z), new Vector3(prevPosition_x, prevPosition_y, prevPosition_z), Color.red,1.0f); prevPosition_x = gameObject.transform.position.x; prevPosition_y = gameObject.transform.position.y; prevPosition_z = gameObject.transform.position.z; 然而,这并没有在构建中绘制。 有没有人知道如何在不使用内置线或跟踪渲染器的情况下执行此操作。 我知道它可以用gl完成但是没有线索如何做到这一点。 任何帮助表示赞赏

显示菜单使光标消失

单击一下,光标就会消失,如下所示: 如何重现: 获取Game Jam菜单模板: https : //www.assetstore.unity3d.com/en/#!/ content / 40465 使用从标准资产导入的FPS控制器添加另一个场景。 勾选UI中的“更改场景” – >启动选项组件。 按下转义并触摸滑块,任何单击都会使光标消失。 它看起来像这样: https : //imgur.com/a/hefmP 如果我勾选鼠标外观 – >锁定光标在FPS控制器中,那么这不会发生,但我也看到了我的FPS游戏中的光标。 我试图添加Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; 暂停和取消时相反,但没有帮助。 可能是因为MouseLook.cs也在更新它们: 我宁愿不把FPSController和暂停菜单联系在一起,它们也在不同的场景中。 那么在进入暂停菜单时如何解锁光标呢? 是否有可以在这里使用的事件模式? 它也使场景变暗,但这是另一个问题。

为什么在宇宙飞船与箱式对撞机相撞后他们没有回头?

我希望当有一个对撞机时将太空船转回来。 但他们继续前进,开箱即用的对撞机和地形。 使克隆发出的脚本,我想在碰撞时返回: using System; using UnityEngine; using Random = UnityEngine.Random; using System.Collections; using System.Collections.Generic; public class SphereBuilder : MonoBehaviour { public GameObject SpaceShip; GameObject[] spheres; public float moveSpeed = 50; // for tracking properties change private Vector3 _extents; private int _sphereCount; private float _sphereSize; /// /// How far to place spheres randomly. /// public […]

Unity – Admob隐藏横幅不起作用

当我进入下一个名为“主要”的场景时,为什么我的admob横幅不隐藏? 我做了其他人在其他线程上所说的一切…… 这是我的代码: using GoogleMobileAds.Api; public class AdmobAds : MonoBehaviour { private BannerView bannerView; private void RequestBanner() { #if UNITY_ANDROID string adUnitId = “ca-app-pub-xxxxxxxxxxxxxxxxxx”; #elif UNITY_IPHONE string adUnitId = “INSERT_IOS_BANNER_AD_UNIT_ID_HERE”; #else string adUnitId = “unexpected_platform”; #endif // Create a 320×50 banner at the top of the screen. BannerView bannerView = new BannerView(adUnitId, AdSize.SmartBanner, AdPosition.Bottom); // […]