我正在使用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) 我在画布中有一个按钮,当我设置带有英文文本的文本按钮时,它的工作正常,但是当设置为泰文时,它会延迟6秒(性能不佳).
首先我认为这是因为我加载了很多声音和图像,但是在删除所有这些声音和图像之后,它仍然很慢,如果我更改了我的泰语文本,它的工作速度很快.
有谁知道如何解决这个问题?
public Text text;
void Start () {
text.text = "??????????";
}
Run Code Online (Sandbox Code Playgroud)
我尝试更改字体(Thonburi字体),但没有影响.所以,我的解决方案是将文本更改为图像,这是一个糟糕的解决方案,但找不到任何有用的方法.
如何在碰撞后正确地将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) 我想知道......在Unity游戏中保存数据的最佳方法是什么.JSONs?如果是这样,怎么样?谢谢
我通过代码创建了一个切换,但它不会显示.此外,我无法改变文本字段的位置.我尝试了很多,没有任何作用.这是我目前的版本,也许你看错了.
我是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) 当设置为时,我正在尝试使用第一人称控制器与世界空间UI进行交互.Cursor.lockStateCursorLockMode.Locked
但是当光标被锁定时,光标位置设置为(-1,-1),这是从Inspector告知的.
我进行了图形光线投射EventSystem.RaycastAll,Sreen.width/2和PointerEventData.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) 我正在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) 试图忽略恼人命名的"TextMesh Pro"目录,位于"Assets"文件夹下(.gitignore所在的根目录的完整路径是"Sky Labyrinth\Assets\Text Mesh Pro").
在实际的.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 \目录中的内容变得缓存或以某种方式不可忽略.
关于如何正确忽略名称中包含空格的整个子目录的任何想法?我不需要忽略其中的特定文件,我希望忽略整个事情.我理解作为一种解决方法,我可以:
从目录名中手动删除空格 - 但是每次更新插件时我都要重复这个
在\ TextMesh Pro \目录中创建另一个.gitignore,忽略内部的所有内容
/*
这将是我的最后一招,因为这是我唯一的工作.但是,我更愿意理解如何正确处理目录名称中的空格,或者了解如果是这样的话,根本不可能.
首先,我将解释发生的事情,然后是我期待发生的事情,最后是它背后的代码
所以当我按下输入时,文本的颜色是绿色
我期望发生的是颜色变红
这是基于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) 我正在创建自定义布局组,我想控制RectTransform子对象.我想RectTransform在使用canvas或Unity的Horizontal或Vertical组时锁定某些字段,以便无法修改它.
我需要同样的效果.您可以在子项的基础上看到此消息RectTransform:由HorizontalLayoutGroup驱动的某些值
我发现了一半:
[ExecuteInEditMode]然后添加:
public void Update()
{
#if UNITY_EDITOR
if (!Application.isPlaying)
{
/* Todo => update child's positions here. */
}
#endif
}
Run Code Online (Sandbox Code Playgroud)
还有其他想法吗?
unity5 ×10
c# ×7
android ×1
collision ×1
directory ×1
function ×1
git ×1
ignore ×1
json ×1
mongodb ×1
node.js ×1
performance ×1
persistence ×1
saving-data ×1
toggle ×1
unity3d-gui ×1
whitespace ×1