在2d模式下使用Unity 4.3我有一个GameObject,它是一个精灵(在我设置精灵的SpriteRenderer中),我试图将它放在屏幕的左上角.
我想让这个精灵位于每个分辨率的左上角(例如)(我有iOS作为构建目标,所以在我的情况下我说的是iPhone的所有分辨率,视网膜,非视网膜,iPad等) .
我缺少的是坐标系统是如何工作的,我习惯于使用坐标系中的像素,其中0,0从左下角或左上角开始.
在Unity 4.3中,似乎0,0位于中心(这显然不是一个大问题)但是让我感到困惑的是,如果我打印我的对象的宽度(128px),我得到一个1.06作为值,并且屏幕被细分为"点"我想,所以左边是-3而右边是+3
所以问题是:为什么我的精灵宽度是1.06?我该如何在这个系统中完美地定位东西?
想象一下,我想在正左上方放置一个128px*128px的正方形,我该怎么办呢?
我需要使用所有标准RESTful方法发送HTTP请求并访问请求正文以便使用它发送/接收JSON.我调查过,
这几乎是完美的,但有些情况下,例如,如果服务器关闭,函数GetResponse可能需要几秒钟才能返回 - 因为它是一个同步方法 - 冻结该时段的应用程序.这个方法的异步版本,BeginGetResponse,似乎不是异步工作(在Unity中),因为它仍然冻结该时期的应用程序.
由于某些原因,只支持POST和GET请求 - 但我还需要PUT和DELETE(标准的RESTful方法),所以我没有进一步深入研究它.
为了运行WebRequest.HttpWebRequest.GetResponse而不冻结应用程序,我研究了使用线程.线程似乎在编辑器中工作(但看起来非常不稳定 - 如果你在应用程序退出时不停止线程,即使你停止它也会永远在编辑器中运行),并且当构建到iOS设备时它会立即崩溃因为我尝试启动一个线程(我忘记写下错误,我现在无法访问它).
荒谬,甚至不会尝试这个.
这个.我想知道他们是如何管理它的.
这是我正在尝试的WebRequest.BeginGetResponse方法的示例,
// The RequestState class passes data across async calls.
public class RequestState
{
const int BufferSize = 1024;
public StringBuilder RequestData;
public byte[] BufferRead;
public WebRequest Request;
public Stream ResponseStream;
// Create Decoder for appropriate enconding type.
public Decoder StreamDecode = Encoding.UTF8.GetDecoder();
public RequestState()
{
BufferRead = new byte[BufferSize];
RequestData = new StringBuilder(String.Empty);
Request = null;
ResponseStream = null;
} …Run Code Online (Sandbox Code Playgroud) 我有一个android库项目并在Unity项目中导入了库项目.现在,我想在Unity项目中实现一个回调,它将根据android库项目给出的响应执行.我的意思是说,来自UnityPlayerActivity(Android Project)的Call Script File方法.
目前我使用下面的代码行但没有任何反应:
UnityPlayer.UnitySendMessage("Main Camera","showMessage",errorMessage);
Run Code Online (Sandbox Code Playgroud)
Main Camera是我的游戏对象.showMessage是脚本文件中的消息名称.
Message是通过Android Activity在Unity中显示的消息.
请检查我的下面代码Unity Script File和Android Activity.
Unity脚本文件:
using UnityEngine;
using System.Collections;
public class scriptfile : MonoBehaviour {
// Use this for initialization
void Start () {
AndroidJavaClass jc = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject jo = jc.GetStatic<AndroidJavaObject>("currentActivity");
jo.Call("shareText","236","236");
}
void showMessage(string message){
print ("hello");
Debug.Log ("hello");
}
}
Run Code Online (Sandbox Code Playgroud)
Android文件UnityPlayerActivity:
/**
* Created by CH-E01073 on 28-09-2015.
*/
public class MainAct extends UnityPlayerActivity implements RegistrationListener,BOffersListener {
Context context;
SharedPreferences prefs …Run Code Online (Sandbox Code Playgroud) 我想在Unity上测试firebase初始应用程序.我在MacOS和xcode项目文件夹中使用Unity构建了一个版本,我已经成功运行了pod命令.
pod安装
在此之后我打开了xcode项目,然后点击构建按钮.在此之前,我发现框架未找到错误.我修好了,现在我得到了
ld: warning: directory not found for option '-L/Users/ali/Library/Developer/Xcode/DerivedData/Unity-iPhone-giljorflztrrychfchrkhcfbqtbh/Build/Products/ReleaseForRunning-iphoneos/FirebaseAuth'
ld: warning: directory not found for option '-L/Users/ali/Library/Developer/Xcode/DerivedData/Unity-iPhone-giljorflztrrychfchrkhcfbqtbh/Build/Products/ReleaseForRunning-iphoneos/FirebaseCore'
ld: warning: directory not found for option '-L/Users/aliavci/Library/Developer/Xcode/DerivedData/Unity-iPhone-giljorflztrrychfchrkhcfbqtbh/Build/Products/ReleaseForRunning-iphoneos/GTMSessionFetcher'
ld: warning: directory not found for option '-L/Users/ali[![enter image description here][1]][1]/Library/Developer/Xcode/DerivedData/Unity-iPhone-giljorflztrrychfchrkhcfbqtbh/Build/Products/ReleaseForRunning-iphoneos/GoogleToolboxForMac'
ld: warning: directory not found for option '-L/Users/ali/Library/Developer/Xcode/DerivedData/Unity-iPhone-giljorflztrrychfchrkhcfbqtbh/Build/Products/ReleaseForRunning-iphoneos/nanopb'
ld: library not found for -lFirebaseAuth
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)
我已经将库补丁添加到库搜索路径中.我添加了一些截图作为附件.
a)Android软件包版本和版本代码表示什么?
b)捆绑版本和版本代码之间有什么区别?
i)假设我有一个捆绑版本0.137,版本代码与此有何关系?版本代码可以是137吗?
ii)当我1.0下次发布捆绑版本时会发生什么?我可以调用版本代码10吗?
c)它们如何相关?对捆绑版本进行编号的正确方法是什么?
NB在搜索中似乎没有一个解释差异的来源.到目前为止,我一直非常偶然地编写我的捆绑包,但我想知道如何做到这一点.
这些名称似乎特定于Unity,但我不确定我是否理解参数甚至是从该页面的内容...
android version unity-game-engine android-version google-play
在Unity中,我希望一个对象具有一个所有其他对象都可以访问的下降速度变量.出于各种原因,我无法使用内置引力来实现我的目标.
如何重复访问一个对象中的变量,以便在更新时从另一个对象获取更新的变量?
我完全不熟悉Unity3D更复杂的功能集,如果它有能力拍照然后操纵它,我很好奇.具体来说,我的愿望是让用户自拍,然后让他们在他们的脸上追踪以创建一个PNG,然后将纹理映射到模型上.
我知道将面部映射到模型上很简单,但我想知道是否需要将照片/雕刻功能写入包含在内的Chrome应用程序中,或者是否可以在Unity中完成.我不需要有关如何做到这一点的教程,只是询问它是否可能.
我正在使用Unity3D版本5开发游戏.游戏应该使用已经在C#.NET4.5引擎中编程的严格业务规则.使用Xamarin/Mono,我们希望在Windows,Android,其他方面使其可用...
我尝试将引擎构建到dll中,并将其用作Unity中的托管插件.但Unity使用旧版Mono来编译整个游戏并拒绝使用.NET 4.5 dll.
我真的需要使用这个代码,我考虑将它降级到.NET 3.5,但鉴于已经在引擎上完成的工作,它不是一个可接受的解决方案.
关于android,我认为使用Xamarin获取原生的android代码并将其用作Unity中的本机插件.现在我需要Windows的解决方案.我正在研究如何使用C++中的C#代码来创建一个非托管的DLL,但我很难理解COM interop,C++/CLI或其他方法之间适用的方式.
有没有人知道如何在Unity中包含来自.NET 4.5的代码而没有/只需要很少的努力?
您好我正在尝试从Android打开一个嵌入式Unity 3D项目但是当我尝试在实际手机(Google Pixel XL)上运行时,似乎该项目将打开但立即关闭并返回到Android应用程序.当我在模拟器(同一部手机)中打开应用程序时,Unity 3d项目打开正常.我的堆栈跟踪中列出了几个错误,并且在我尝试运行应用程序时附加了完整的logcat.从搜索这些错误,我发现没有具体解决这个问题.如果有人有任何建议,请告诉我.我的代码可以在以下链接中找到
https://drive.google.com/drive/folders/167mCvox1d564VUw4EsNbDn_ir2jP3QrZ?usp=sharing
更新:我试图在较旧的手机上打开Unity 3D项目,它打开完美.是否有额外的权限或Pixel需要包含的任何内容?
更新:我运行了一个内存配置文件,但不确定如何解释它.我的输出显示如下:
logcat的:
05-08 10:10:17.967 14966-14987/? I/Adreno: PFP: 0x005ff087, ME: 0x005ff063
05-08 10:10:17.972 14966-14987/? I/zygote: android::hardware::configstore::V1_0::ISurfaceFlingerConfigs::hasWideColorDisplay retrieved: 0
05-08 10:10:17.973 14966-14987/? I/OpenGLRenderer: Initialized EGL, version 1.4
05-08 10:10:17.973 14966-14987/? D/OpenGLRenderer: Swap behavior 2
05-08 10:10:22.204 14966-15162/com.example.kshah.unityvrtest I/Unity: SystemInfo CPU = ARMv7 VFPv3 NEON, Cores = 4, Memory = 3753mb
SystemInfo ARM big.LITTLE configuration: 2 big (mask: 12), 2 little (mask: 3)
05-08 10:10:22.205 14966-15162/com.example.kshah.unityvrtest I/Unity: ApplicationInfo com.example.kshah.unityvrtest version 1.0 build c35f44f5-89ae-4e59-bedb-0c7f4e71bee4
05-08 10:10:22.211 …Run Code Online (Sandbox Code Playgroud) 我创建使用下面这是我从拿到代码贝塞尔曲线 在这里.我还制作了一个BezierPair游戏对象,它有两条贝塞尔曲线作为子对象.
从下面的相应图像和BezierPair,其中points[0]...... points[3]表示为P0...... P3:
P0每个Bézier曲线在移动时始终保持不变.换句话说,我希望他们总是一起移动,同时选择关闭这个动作.P1两条曲线是分开的.如何使P1每条曲线在相同距离的相同方向上移动?P2两条曲线是分开的.我怎样才能让P2一个曲线镜P2沿连线另一曲线 P0和P3?注意,镜像线将从曲线1在下面的例子中,因为采取curve1的P2运动.如果curve2的P2移动,则反射镜线将取自curve2S' P0P3.我不想在运行时这样做.因此必须使用自定义编辑器.我尝试在下面的代码中解决1.但是如果没有在层次结构窗口中选择BezierPair,第二条曲线的位置将不会更新
贝塞尔:
public static class Bezier {
public static Vector3 GetPoint (Vector3 p0, Vector3 p1, Vector3 p2, Vector3 p3, float t) {
t = Mathf.Clamp01(t);
float oneMinusT = 1f - t;
return
oneMinusT * oneMinusT …Run Code Online (Sandbox Code Playgroud)