之前我使用过C#,我们可以定义struct一个值类型.我现在正在学习Kotlin,据我所知,kotlin data-class按价值进行比较,可以按价值复制等.在网上发现了一些关于此的讨论,但这并不简单,我希望C#和Kotlin的技术人员能够清除这一点. :我可以将Kotlin解释data class为C#struct并称之为一天吗?如果不是,有什么区别?
我以前使用过此功能,使用ctrl+ 制作屏幕截图,s并将其全部保存到了我的桌面上。现在,我找不到任何屏幕截图。我在网上看到的只是“如何拍摄屏幕截图”,这很好,但是我在相对较长的时间内做了很多,所以我不想重做。
那么,ctrl+ 在哪里s保存我的屏幕截图?
我正在写一些使用ByteBuffers 的东西。在API的文档中它说
没有办法显式地释放缓冲区(没有 JVM 特定的反射)。缓冲区对象会受到 GC 的影响,在缓冲区对象变得不可访问后,通常需要两个 GC 周期才能释放堆外内存。
然而,在SO 帖子接受的答案中,我读到
BigMemory 通过直接 ByteBuffer 使用 JVM 进程的内存地址空间,与其他本机 Java 对象不同,BigMemory不受 GC 的影响。
现在我该怎么办,我应该释放创建的缓冲区吗?或者我误解了文档或答案中的某些内容?
我打算做一些帮助我在家里或其他地方组织任务的应用程序.为此,我需要一个数据库服务器(一个在家运行的虚拟服务器),一个后端部分(业务逻辑)和前端(视图).在学校我们通过WPF学习了MVVM,但坦率地说,我只在明确要求时使用它.有很多好处有利于Unity
现在,尽管我会像这样制作一个简单的应用程序,但有时我可能想要扩展它,改进它或完全改变一些组件.我知道如何在WPF中使用MVVM,但我对Unity实现只有一些模糊的想法,我希望有人熟练地概述.
前端(Unity)将负责声音管理,精美动画和UI本身.但UI按钮事件无法直接访问数据库,所以我想构建一些Bridge Classes.假设我想删除提醒,作为一个简单的例子.在一个OnButtonClicked()方法中,我只是调用一个BridgeClass's' PleaseDeleteThis(MyReminder)并且在该方法内部有后端解决方案实际上发现提醒id并从数据库中删除,然后将everything all right标志发送回前端应用程序,因此我知道它是成功的.我想到的是,使用这些桥接类我不必担心如果我更改数据库服务器或前端会发生什么,因为他们必须知道的是与之通信bridge.我知道这个例子已经过度简化了,但是这个关于组件完整性和MVVM模式的可行性有多大?
我制作了一个使用后处理效果的 2D 游戏。因此,当后处理关闭时,游戏在我的旧平板电脑上运行良好,而当后处理打开时,游戏会卡顿,但我想探索我的可能性。
有没有办法在我的 Unity 项目中强制 Android 硬件加速?
编辑:我将此清单放入项目的 android 文件夹中。
我做对了吗?性能无显着差异。
<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.unity3d.player"
xmlns:tools="http://schemas.android.com/tools"
android:installLocation="preferExternal"
android:versionCode="1"
android:versionName="1.0">
<supports-screens
android:smallScreens="true"
android:normalScreens="true"
android:largeScreens="true"
android:xlargeScreens="true"
android:anyDensity="true"/>
<application
android:hardwareAccelerated="true"
android:theme="@style/UnityThemeSelector"
android:icon="@drawable/app_icon"
android:label="@string/app_name">
<activity android:name="com.unity3d.player.UnityPlayerActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
编辑器截图:
我做了一个简单的消息框,应向用户显示一条消息。它是一个预制件,可以做几件事,大部分是实例化时的动画。为了在实例化时运行代码,我使用了该Start()函数。当我已经知道要传达什么信息时,它就起作用了,但是我需要一个类似的东西constructor,该东西在之前运行Start(),但instantiation可以运行并且可以接受参数。现在,我完全意识到我可以实例化,设置消息并运行所有内容-因此在实例化它的地方使用3行代码,但是我很好奇是否还有另一个更合适的解决方案?我在网上发现的只是实例化,然后做点什么。
编辑:
我要求显示一个消息框:
var timeBox =
Instantiate(messageBox, penaltySpawnLoc.position, penaltyPrefab.transform.rotation, transform);
var scr = timeBox.GetComponent<MessageBox>();
scr.OnCreated(message);
Run Code Online (Sandbox Code Playgroud)
OnCreated进行初始化,显示动画,基本上所有内容。但它需要一个string输入知道什么露面,我不希望设置“对飞”的文本价值-它将使显得有些怪异闪烁时在MessageBox可见,但文本未设置。
编辑2:
最后一个参数transform的Instantiation是Canvas这个剧本是因为这是一个UI脚本。该参数意味着刚实例化的GameObject是该子对象。
编辑3:
timeBox只是的一个实例messageBox,它们是GameObject。一个消息框仅使用一次。其目的是与消息一起出现,并在0.5秒后消失并移开。离开后,它会自我毁灭。
我知道它会返回在父级层次结构中找到的给定组件,但是按什么顺序?我需要知道,因为我想使用它来初始化脚本,并且必须先初始化父级,然后再初始化子级(因为较低层次的组件使用其直接父级的计算值)。
我在运行我的游戏时查看了分析器,我可以在那里看到一大堆东西 - 但不是我的脚本的内存使用情况。问题是,我的游戏的总内存分配是 223 MB,但纹理只有这个的 112 个和我看到的一两个 MB,除此之外。我不知道我的其他 100 MB 内存去了哪里,我想稍微优化一下我的脚本。旁注:我使用 Visual Studio 进行编码。也许我应该去那里看看?
我试图创建一个mesh从sprite的vertices,像这样:
private Mesh SpriteToMesh(Sprite sprite)
{
Mesh mesh = new Mesh
{
vertices = Array.ConvertAll(sprite.vertices, i => (Vector3)i),
uv = sprite.uv,
triangles = Array.ConvertAll(sprite.triangles, i => (int)i)
};
return mesh;
}
Run Code Online (Sandbox Code Playgroud)
问题是,没有错误,我得到了一个简单的立方体,一个 3D 立方体。
我sprite的不是二次方的,所以它确实有一些减少过度绘制的分辨率。
问题是,如何mesh从 a 中得到它sprite?
我这样做的原因是我需要精灵边缘周围的粒子效果才能使用网格作为发射器。
说我有以下简单的两种方法:
class Question
{
public void MyMethod()
{
Console.WriteLine("no params here");
}
public void MyMethod(object o = null)
{
Console.WriteLine("an object here");
}
}
Run Code Online (Sandbox Code Playgroud)
我这样调用一个:
new Question().MyMethod();
Run Code Online (Sandbox Code Playgroud)
它导致no params方法的调用,在这里写"没有params".
我知道我仍然可以打电话给对方,比如说
new Question().MyMethod(null);
Run Code Online (Sandbox Code Playgroud)
但我的问题是,为什么编译器不会警告我可能存在歧义或强迫我特别注意?它如何决定要拨什么电话?只是参数较少的那个?
我在本地目录中存在我需要的未跟踪文件,但不希望提交到远程存储库(例如obj文件、mtl文件、.vs文件夹等)。我有.gitignore我使用的这个文件:
## Ignore Visual Studio temporary files, build results, and
## files generated by popular Visual Studio add-ons.
##
## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
# User-specific files
*.suo
*.user
*.userosscache
*.sln.docstates
*.obj
*.png
*.log
*.blend
*.blend1
*.mtl
*.jpg
*.jpeg
*.opendb
# User-specific files (MonoDevelop/Xamarin Studio)
*.userprefs
# Build results
[Dd]ebug/
[Dd]ebugPublic/
[Rr]elease/
[Rr]eleases/
x64/
x86/
bld/
[Bb]in/
[Oo]bj/
[Ll]og/
# Visual Studio 2015/2017 cache/options directory
.vs/
# Uncomment if you have tasks …Run Code Online (Sandbox Code Playgroud)