我在 Unity 中创建了我的应用程序,在为 Android 和 iPhone 发布后,我试图发布 Windows 10 Phone 版本。
我将我的图像资产添加到 Unity,但是当我在 Visual Studio 中打开生成的项目时,我在 Visual Assets 选项卡中收到以下错误:
对于“Scale 100 50x50 px”图像的逻辑名称“Assets\StoreLogo.png”,项目中混合了带有和不带有“scale”或“targetsize”限定符的法师。所有其他图像都正确导入。
我在 SO 上看到的唯一相关问题是:
将所有图像添加到 Package.AppXManifest 会导致编译器警告
但就我而言,这是一个错误而不是警告
具有正确比例的图像确实存在于我的 Assets 文件夹中,即使我必须手动添加它:
只是想知道是否有人知道如何调试/修复这个问题?重命名图像,创建新图像等?即:为什么 50x50px 缩放 100 图像没有按预期工作。
我的 Unity 版本是 5.3.4,Visual Studio 2015
我正在使用 Slider 控件从 Unity 中的用户那里获取反馈。我知道如何检测用户在滑动箭头时何时更改滑块的值。
但是,如果用户不想移动它,我似乎无法找到一种方法来检测用户是否只是单击滑块的当前位置。我想避免添加其他视觉控件。
有没有办法检测用户何时点击滑块?
我有一些 Unity 代码,可以使用 ac# 脚本创建一个预制件的网格(总共 2^ 维)。更改“尺寸”值后(现在通过编辑器),我希望在 Unity 使用 OnValidate 更新之前删除所有预制件。Unity 似乎不想删除之前代表空间的一组对象,因为这些对象仍然可以在 Unity Hierarchy Pane 中访问:
无法统一销毁对象。错误说:
“无法销毁'XXX'的Transform组件。如果您想销毁游戏对象,请改为在游戏对象上调用'Destroy'。不允许销毁transform组件。”
(参考函数 DeletePoints/GeneratePoints。调用图: OnValidate --> GeneratePoints(->DeletePoints, ->GeneratePointsHelper)
using UnityEngine;
using System;
using System.Collections.Generic;
using System.Collections;
public class BinarySpacePointGenerator : MonoBehaviour {
private const int UNITY_DRAW_SPACE_DIMENSIONALITY = 3;
/**
* These values denote spacings for the three dimensional space between binary points.
*/
public float xoff, yoff, zoff;
public float scale;
public Transform pointPrefab;
/**
* The current dimensionality of binary space to be …Run Code Online (Sandbox Code Playgroud) 我需要在游戏开发引擎 Unity 中创建一个基本的list view或scroll view在我的场景中。
list view没有成功。list view或scroll view.List<string>。现在我所做的是将字符串设置为直接用换行符\n.
我也尝试将字符串添加到scroll view统一的内容中,但我还没有设法让它工作。
任何人都可以提供参考吗?
所以我只是想通过脚本简单地改变粒子系统的起始颜色,但它不起作用。
private ParticleSystem trailPartical; // The particle system
public Color StartColor
{
var main = trailPartical.main;
main.startColor = value;
}
Run Code Online (Sandbox Code Playgroud)
这根本不起作用,我也尝试过折旧版本:
trailParticle.startColor = value;
Run Code Online (Sandbox Code Playgroud) 我添加了一个名为它的新层:CameraLayer。
我在标记为 MainCamera 的第一个 ThirdPersonController 下有一个 Camera 作为孩子。我设置此相机将显示除CameraLayer 以外的所有内容。在剔除面具的检查器中。标记的所有内容,但未标记 CameraLayer。现在我在剔除面具中看到:混合。这是显示一切的主摄像头。
我在 Cube 下作为孩子添加的第二个相机。并且我希望该相机在游戏运行时始终只在游戏视图窗口右下角的小窗口中显示立方体。在这个相机剔除蒙版中,我只选择了 CameraLayer 而未选择其余部分。所以在剔除蒙版中的这个相机中,我看到:CameraLayer。
但是当我运行游戏时,我根本看不到立方体下的相机。
在屏幕截图中,我用黑色标记了立方体下的相机应该在哪里并显示立方体:
我有一个 NPC,当玩家对撞机与 NPC 碰撞时,我的玩家可以与之交谈,我使用这段代码来做到这一点:
private void OnTriggerStay2D(Collider2D other)
{
if (other.gameObject.tag == "InteractiveArea")
{
if (Input.GetKeyDown(KeyCode.E))
{
Debug.Log("PRESSED NPC");
CreateAndShowDialog();
}
}
}
Run Code Online (Sandbox Code Playgroud)
然而,这真的是随机调用的,有时是我第一次按“E”,有时是第二次或第三次,等等。
我的刚体:
我使用的碰撞器是标准的 BoxCollider2D,我的玩家碰撞器是触发器,NPC 不是。
为什么在OnTriggerStay功能中没有检测到某些按键?
我要打印
*****
*****
*****
*****
*****
Run Code Online (Sandbox Code Playgroud)
通过使用 monoDevelop 的 Debug.Log() 在 unity 控制台中使用 for 循环。这是我的代码:
for(int row=1;row<=5;row++)
{
for(int column=1; column<=5;column++)
{
Debug.Log("*");
}
}
Run Code Online (Sandbox Code Playgroud)
但它以这种方式显示输出:
*
*
*
*
*
till 25 rows.
Run Code Online (Sandbox Code Playgroud) 我有一点问题。我似乎找不到一种很好的方法来区分 Unity 是触发鼠标还是触摸事件。我所说的触摸是指当用户在触摸显示屏上触摸某些东西后将手指从屏幕上松开时。
问题是这样的:我有一个游戏逻辑问题,用户既放开他们用鼠标选择的东西,又同时触摸/释放触摸以单击 UI 按钮(换句话说,我试图检测仅释放鼠标,或者仅释放触摸 - 我该怎么做?)。我试过同时使用Input.GetMouseButtonUp(0)和Input.GetMouseButton(0),但如果是触摸事件或鼠标按钮事件,两者都会改变它们的状态。
那么如何正确区分两者呢?我什至尝试使用Touch.fingerId可以很好地跟踪/区分仅触摸事件的属性,但是,问题是我仍然无法区分仅使用鼠标,Input.GetMouseButton(0)因为即使在触摸时它也会触发。
有没有人碰巧知道在 Unity 中单独检测鼠标释放或触摸释放的正确方法是什么?
编辑:
有人不理解手头的问题,所以让我们假设您有一台支持触摸的桌面设备。添加这个脚本:
void Update () {
if (Input.GetMouseButtonDown(0))
Debug.Log("Mouse button down.");
if (Input.GetMouseButtonUp(0))
Debug.Log("Mouse button up.");
}
Run Code Online (Sandbox Code Playgroud)
如果您用鼠标单击并按住鼠标,在按住的同时,您可以用手指触摸并松开,这将记录Mouse button up.,尽管您没有松开鼠标按钮。如何区分鼠标抬起与触摸释放?
所以在Unity中我的this.tilesX和this.tilesY都是公共变量,它们都有一个值.它们设置在Unity的检查员中.数组初始化后的debug.log读出"10 x tiles 10 y tiles".所以我知道这两个变量都已初始化.
但是,当我去检查this.tileLayer1 2D数组的元素是否为null时,它返回debug.log打印出"tile is null".我完全迷失了.下面是初始化数组的函数以及我的自定义Tile类的构造函数.
void Start () {
this.tileLayer1 = new Tile[this.tilesY, this.tilesX];
Debug.Log(tilesX + " x tiles " + tilesY + " y tiles");
for (int y = 0; y < this.tileLayer1.GetLength(0); y++)
{
for (int x = 0; x < this.tileLayer1.GetLength(1); x++)
{
if (this.tileLayer1[x, y] == null)
{
Debug.Log("tile is null");
}
}
}
this.BuildMesh();
}
Run Code Online (Sandbox Code Playgroud)
这是新Tile代码调用的构造函数.
public Tile () {
this.totalVerts = this.vertX * this.vertY;
this.vertices = new Vector3[totalVerts];
this.normals …Run Code Online (Sandbox Code Playgroud)