标签: unity5

为Unity 3D 5.3构建Android库时出错 - Android Studio

我正在使用Android Studio尝试为Unity3d 5.3构建Android库.为此,我创建了一个Android库模块,我添加了classes.jar文件以与UnityPlayer一起使用,如下图所示:

在此输入图像描述

然后,我生成了模块,我得到了'wrapper-debug.aar'文件,我把它放在'\ Assets\Plugins\Android'中.最后,当我构建时,我遇到以下错误:

Error building Player: CommandInvokationFailure: Unable to convert classes   into dex format. See the Console for details.
C:/Program Files/Java/jdk1.8.0_45\bin\java.exe -Xmx2048M -Dcom.android.sdkmanager.toolsdir="C:/Users/.../AppData/Local/Android\tools" -Dfile.encoding=UTF8 -jar "C:\Program Files\Unity\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\sdktools.jar" -

stderr[
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lbitter/jnibridge/JNIBridge;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lbitter/jnibridge/JNIBridge$a;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/NativeLoader;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/ReflectionHelper;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/ReflectionHelper$1;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/ReflectionHelper$a;
Uncaught translation error: java.lang.IllegalArgumentException: already added: Lcom/unity3d/player/UnityPlayer; …
Run Code Online (Sandbox Code Playgroud)

android unity-game-engine android-studio unity5

8
推荐指数
1
解决办法
3517
查看次数

在Unity中使用泰语文本设置标签时性能非常糟糕

我在画布中有一个按钮,当我设置带有英文文本的文本按钮时,它的工作正常,但是当设置为泰文时,它会延迟6秒(性能不佳).

首先我认为这是因为我加载了很多声音和图像,但是在删除所有这些声音和图像之后,它仍然很慢,如果我更改了我的泰语文本,它的工作速度很快.

有谁知道如何解决这个问题?

public Text text;

void Start () {

    text.text = "??????????";

}
Run Code Online (Sandbox Code Playgroud)

我尝试更改字体(Thonburi字体),但没有影响.所以,我的解决方案是将文本更改为图像,这是一个糟糕的解决方案,但找不到任何有用的方法.

c# performance unity-game-engine unity5

7
推荐指数
1
解决办法
460
查看次数

碰撞后正确附加到GameObject?

如何在碰撞后正确地将GameObject附加(或"粘贴")到另一个GameObject?问题:我希望GameObject在碰撞后附加,即使它正在改变比例.

"附上碰撞"代码:

protected Transform stuckTo = null;
protected Vector3 offset = Vector3.zero;

public void LateUpdate()
{
    if (stuckTo != null)
        transform.position = stuckTo.position - offset;
}  

void OnCollisionEnter(Collision col)
{
    rb = GetComponent<Rigidbody>();
    rb.isKinematic = true;

    if(stuckTo == null 
       || stuckTo != col.gameObject.transform)
        offset = col.gameObject.transform.position - transform.position;

    stuckTo = col.gameObject.transform;
}
Run Code Online (Sandbox Code Playgroud)

此代码使GameObject在碰撞后完美连接.但是当GameObject改变比例(当它附着时)时,它在视觉上不再看起来与它碰撞的任何东西相关联.基本上,这段代码使GameObject在碰撞时仅保留原始比例.如何使GameObject始终坚持与碰撞的任何东西?它在过程中的规模是多少?我想避免养育子女:"虽然有点不安全,但是养育对手会造成奇怪的结果,比如随机传送或物体开始疯狂地移动和旋转等等." - SamedTarıkÇETİN:评论.

缩放脚本:

public Transform object1; //this is the object that my future-scaling GameObject collided with.
public Transform object2; //another object, the same …
Run Code Online (Sandbox Code Playgroud)

c# collision-detection collision unity-game-engine unity5

7
推荐指数
1
解决办法
998
查看次数

在Unity游戏中保存数据的最佳方法

我想知道......在Unity游戏中保存数据的最佳方法是什么.JSONs?如果是这样,怎么样?谢谢

persistence json unity-game-engine saving-data unity5

7
推荐指数
2
解决办法
3万
查看次数

Unity从脚本创建UI控件

我通过代码创建了一个切换,但它不会显示.此外,我无法改变文本字段的位置.我尝试了很多,没有任何作用.这是我目前的版本,也许你看错了.

我是Unity新手,非常困难.

public class Game : MonoBehaviour 
{

    public GameObject canvas;

    void Start () 
    {
        GameObject newGO = new GameObject("myTextGO");
        newGO.transform.SetParent(this.transform);
        newGO.transform.position = new Vector3(0, 0, 0);

        Text myText = newGO.AddComponent<Text>();
        myText.text = "Ta-dah!";
        Font ArialFont =  
           (Font)Resources.GetBuiltinResource(typeof(Font),"Arial.ttf");
        myText.font = ArialFont;
        myText.material = ArialFont.material;
        myText.color = Color.black;
        myText.transform.position = new Vector3(0, 10, 0);

        GameObject secGO = new GameObject("myGO");
        secGO.transform.SetParent(this.transform);
        Toggle myToggle = secGO.AddComponent<Toggle>();
        myToggle.isOn = true;
        myToggle.transform.position = new Vector3(10, 10, 0);
    }
}
Run Code Online (Sandbox Code Playgroud)

c# toggle unity-game-engine unity5

7
推荐指数
1
解决办法
5019
查看次数

Unity UI - 在光标锁定时与worldspace UI交互

当设置为时,我正在尝试使用第一人称控制器世界空间UI进行交互.Cursor.lockStateCursorLockMode.Locked

世界空间用户界面和一个角色 世界空间用户界面和一个角色

但是当光标被锁定时,光标位置设置为(-1,-1),这是从Inspector告知的.

光标位置(-1,-1) 光标位置(-1,-1)

我进行了图形光线投射EventSystem.RaycastAll,Sreen.width/2PointerEventData.EventSystem.current.RaycastAll收集屏幕中间的所有UI对象,但不会向它们发送任何事件.

我还试图ExecuteEvents.Execute<IEventSystemHandler>将事件发送到UI目标.当我向其发送'submit'事件时,这适用于按钮.显然这不是一个优雅的解决方案.我也不知道如何向滑块发送消息.

// manully send a 'submit' event to UI elements
List<RaycastResult> results = new List<RaycastResult>();
void Update() {
    if (Input.GetButtonUp("Fire1")) {
        PointerEventData data = new PointerEventData(EventSystem.current);
        data.position = new Vector2(Screen.width / 2, Screen.height / 2);
        EventSystem.current.RaycastAll(data, results);
        foreach (var result in results) {
            ExecuteEvents.ExecuteHierarchy<ISubmitHandler>(
                result.gameObject, data,
                ExecuteEvents.submitHandler
            );
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在Windows上全屏播放时,这种疯狂的尝试都有效.2333

[System.Runtime.InteropServices.DllImport("user32.dll")] …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine unity3d-editor unity3d-gui unity5

7
推荐指数
1
解决办法
1091
查看次数

UnityWebRequest.downloadHandler返回null,同时从Node Server获得响应

我正在Unity上创建一个注册场景.在后端我有MongoDB的NodeJS服务器.注册成功,数据也保存在Mongo上.

这是我的NodeJS api用于注册

api.post('/register', (req,res) => {
Account.register(new Account({username: req.body.username}), req.body.password, function(err, account){
  console.log("acc: "+account);
  if(err){
    if (err.name == "UserExistsError") {
      console.log("User Exists");
      return res.status(409).send(err);
    }else {
      console.log("User Error 500");
      return res.status(500).send(err);
    }
  }else {
    let newUser = new User();
    newUser.accountid = account._id;
    newUser.name = req.body.fullname;
    newUser.gender = req.body.gender;
    newUser.role = req.body.role;
    newUser.country = req.body.country;
    newUser.coins = req.body.coins;
    newUser.save(err => {
      if(err){
        console.log(err);
        return res.send(err);
      }else{
        console.log('user saved');
        res.json({ message: 'User saved' });
      }
    });
    passport.authenticate(
      'local', {
        session: …
Run Code Online (Sandbox Code Playgroud)

c# unity-game-engine mongodb node.js unity5

7
推荐指数
1
解决办法
5800
查看次数

.gitignore名称中包含空格的整个目录

目标

试图忽略恼人命名的"TextMesh Pro"目录,位于"Assets"文件夹下(.gitignore所在的根目录的完整路径是"Sky Labyrinth\Assets\Text Mesh Pro").

尝试

我按照3个线程(,,)中的建议失败了.

在实际的.gitignore文件中,我试过:

TextMesh Pro/
TextMesh\ Pro/
**/TextMesh Pro/
**/TextMesh\ Pro/
\Assets\TextMesh Pro\
\Assets\TextMesh/ Pro\
**\Assets\TextMesh Pro\
**\Assets\TextMesh/ Pro\
"\TextMesh Pro\"
"**\TextMesh Pro\"
Run Code Online (Sandbox Code Playgroud)

还有一些我没想到的其他组合(确实不起作用).

排除

文件没有缓存,我从来没有从该目录提交任何内容.只是为了确定,我跑了:

git rm -r --cached "Sky Labyrinth\Assets\Text Mesh Pro\"
Run Code Online (Sandbox Code Playgroud)

什么都不匹配.为了倍加肯定,我跑了

git reset --hard
Run Code Online (Sandbox Code Playgroud)

并重新导入资产.我猜有一个小小的警告,我确实提交了一个.Unity场景更改,里面有一些TextMesh Pro游戏对象; 尽管我缺乏专家Git知识,但我确信不应该神奇地让Assets\TextMesh Pro \目录中的内容变得缓存或以某种方式不可忽略.

HALP

关于如何正确忽略名称中包含空格的整个子目录的任何想法?我不需要忽略其中的特定文件,我希望忽略整个事情.我理解作为一种解决方法,我可以:

  1. 从目录名中手动删除空格 - 但是每次更新插件时我都要重复这个

  2. 在\ TextMesh Pro \目录中创建另一个.gitignore,忽略内部的所有内容

    /*

    这将是我的最后一招,因为这是我唯一的工作.但是,我更愿意理解如何正确处理目录名称中的空格,或者了解如果是这样的话,根本不可能.

git directory whitespace ignore unity5

7
推荐指数
2
解决办法
4906
查看次数

事件功能未按预期工作

首先,我将解释发生的事情,然后是我期待发生的事情,最后是它背后的代码

所以当我按下输入时,文本的颜色是绿色

我期望发生的是颜色变红

这是基于if我在字段中输入"Bad"

//Please note I have edited uni9mportant code out

//Event Listener
inputField.onEndEdit.AddListener (delegate {
            VerifyWords();
});

//Clss that handles the dictionary
public abstract class WordDictionary: MonoBehaviour{
    public static Dictionary<string,bool> _wordDictionary = new Dictionary<string,bool> ();

    private void Start(){
        _wordDictionary.Add ("Bad",true);
    }
}

//Function that handles the word verification
private void VerifyWords(){
        if (openChat == false) { //If we done have open chat
            bool hasBadWords = false; //Reset boolean
            string[] stringSplit = inputField.text.Split (' '); //Split text string

            for …
Run Code Online (Sandbox Code Playgroud)

c# function event-handling unity-game-engine unity5

7
推荐指数
1
解决办法
246
查看次数

如何锁定RectTransform的字段

我正在创建自定义布局组,我想控制RectTransform子对象.我想RectTransform在使用canvas或Unity的Horizo​​ntal或Vertical组时锁定某些字段,以便无法修改它.

我需要同样的效果.您可以在子项的基础上看到此消息RectTransform:由Horizo​​ntalLayoutGroup驱动的某些值

在此输入图像描述

我发现了一半:

[ExecuteInEditMode]然后添加:

public void Update()
{
#if UNITY_EDITOR
    if (!Application.isPlaying)
    {
        /* Todo => update child's positions here. */
    }
#endif
}
Run Code Online (Sandbox Code Playgroud)

还有其他想法吗?

c# unity-game-engine unity5

7
推荐指数
1
解决办法
781
查看次数