小编gen*_*ray的帖子

在Unity中使用自定义清单文件和权限?

我目前正在尝试使用Unity3D为Android编写一个小游戏。因为我想要一个可见的状态栏,所以我在Project文件夹(C:\ Users \ Public \ Documents \ Unity Projects \ ProjectName \ Temp \ StagingArea)中修改了AndroidManifest,如下所示:

<application android:theme="Theme.Light.NoTitleBar" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false" android:isGame="true" android:banner="@drawable/app_banner">
Run Code Online (Sandbox Code Playgroud)

但是每次我生成APK时,Unity都会将Android Manifest更改为:

<application android:theme="@style/UnityThemeSelector" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="false" android:isGame="true" android:banner="@drawable/app_banner">
Run Code Online (Sandbox Code Playgroud)

Unity3D是否每次都会更改修改过的清单?

c# java xml android unity-game-engine

9
推荐指数
2
解决办法
1万
查看次数

Libgdx 监听器进入和退出多次触发

我目前正在尝试实现一个 clickListener。我发现了一个很棒的运行时工具,它叫做 Overlap2D,在那里我制作了一些漂亮的按钮并加载它们,一切都工作正常。因为我想为我的按钮制作“悬停”效果,所以我使用了 ClickListener 和方法进入和退出,它看起来是这样的:

      @Override
       public void enter(InputEvent event, float x, float y, int pointer, Actor fromActor){

               playButton.setLayerVisibility("MouseOver", true);
               playButton.setLayerVisibility("pressed", false);
               playButton.setLayerVisibility("normal", false);     

               System.out.println("Actor enter : "+fromActor);

       }

       @Override
       public void exit(InputEvent event, float x, float y, int pointer, Actor toActor){


               playButton.setLayerVisibility("MouseOver", false);
               playButton.setLayerVisibility("pressed", false);
               playButton.setLayerVisibility("normal", true);

               System.out.println("Actor exit : "+toActor);

       }
       @Override
       public boolean touchDown (InputEvent event, float x, float y, int pointer, int button){

               System.out.println("touchdown");

               return true;
       }
        @Override
       public void touchUp (InputEvent event, float x, float …
Run Code Online (Sandbox Code Playgroud)

java button clicklistener libgdx overlap2d

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

如何将数据传递给 props.children?

对本机反应很新...

我试图遍历我的 this.props.children 以便将一个字符串传递给他们,该字符串在我的父级中定义......这可能没有在渲染方法中定义这些子级吗?

<OwnRenderer passMe = "string...">
    <OwnText/>
</OwnRenderer>
Run Code Online (Sandbox Code Playgroud)

OwnRenderer 应该将 prop-string 传递给它的所有孩子...... OwnRenderer 不知道他要渲染哪些孩子,所以不可能通过“”直接传递道具......

我试图遍历 childs 以直接传递该字符串,但这很遗憾没有奏效。

this.props.children.map((x) => x.passed = this.props.passMe);
Run Code Online (Sandbox Code Playgroud)

不知何故,它只是没有改变状态……你们会如何以一种简单易懂的方式做到这一点?

javascript reactjs react-native

5
推荐指数
1
解决办法
188
查看次数

我们如何更新深度克隆实体?

描述

我正在开发一个小型 Java 游戏服务器……为了在另一个线程中更新和保存游戏,我被迫深度克隆了我的一些实体。否则会发生内部休眠异常:更新我的实体时出现“ConcurrentModificationException”

所以我的流程目前看起来像这样:

  • 标记要更新的游戏实体
  • 将这些实体传递给另一个线程
  • 克隆这些实体
  • 在克隆实体上调用“session.update”
  • 在一分钟内重复

它适用于简单的类,但关系存在巨大问题。

问题

当我深度克隆我的“块”实体(见下文)时,它的集合( inChunk )也会被深度克隆。我使用该深度克隆实体并将其传递给“session.update”。

在更新期间,块始终插入其集合子项。它从不更新它们。因为我每分钟重复这个更新过程(见上文),它会在第二个更新周期导致“重复条目”异常。


// Run the database operation for updating the entities async in a new thread, return updated entities once done
        return CompletableFuture.runAsync(() -> {

            var session = database.openSession();
            session.beginTransaction();

            try {

                // Save entities
                for (var entity: entities)
                    session.update(entity);

                session.flush();
                session.clear();

                session.getTransaction().commit();
            } catch (Exception e){

                var messageComposer = new ExceptionMessageComposer(e);
                GameExtension.getInstance().trace("Update : "+messageComposer.toString());
                session.getTransaction().rollback();
            }

            session.close();
        }).thenApply(v -> entities);

@Entity
@Table(name …
Run Code Online (Sandbox Code Playgroud)

java spring multithreading hibernate jpa

5
推荐指数
1
解决办法
226
查看次数

将结构从装箱复制到分配的内存中?

背景

可以说我有一个结构。我们还假装我们不知道它的类型。这就是为什么我们把它装箱而无法拆箱。


public struct Player{
   public float hp;
   public float maxHP;
}

var boxedPlayer = (object)new Player();
var typeSize = typeof(Player);
var ourAllocatedMemoryPTR = (byte*)someAllocCall();

// Copy the object into the new memory
var objHandle = GCHandle.Alloc(boxedPlayer , GCHandleType.Pinned);
var adress = objHandle.AddrOfPinnedObject();
var ptr = adress.ToPointer();
Buffer.MemoryCopy(ptr, ourAllocatedMemoryPTR, typeSize, typeSize);
objHandle.Free();
Run Code Online (Sandbox Code Playgroud)

据我所知,装箱结构...与结构本身的大小不同...因为它被装箱和管理。因此,头部或尾部有一些字节将其定义为一个对象,一个装箱结构。因此上面的示例将整个装箱结构复制到内存中。据我所知。这不是我们想要的。

问题

是否可以仅将框内的结构复制到分配的内存中?我们新分配的内存应该只存储结构,而不是装箱的结构。我认为通过将结构从盒子中取出来可能可以吗?在复制过程中切割将其定义为盒子的部分或头部/尾部?

这可能吗 ?结构体到底是如何装箱的?前后添加了多少字节?记忆中的它是什么样的?

很高兴获得任何帮助!谢谢 :)

c# memory struct

3
推荐指数
1
解决办法
488
查看次数

Channel/BlockingCollection 分配免费替代方案?

我最近对我的框架进行了基准测试,发现它分配了大量垃圾。

我正在使用 andChannel<T>TryRead操作ReadAsync在每次调用时分配内存。所以我用 a 交换了它,BlockingCollection<T>它也在 期间分配内存TryTake

我使用了一个带有单个写入器/读取器的无界通道。还有一个正常的BlockingCollection<T>

// Each thread runs this, jobmeta is justa struct 
while (!token.IsCancellationRequested)
{
    var jobMeta = await Reader.ReadAsync(token);  // <- allocs here
    jobMeta.Job.Execute();
    jobMeta.JobHandle.Notify();
}
Run Code Online (Sandbox Code Playgroud)

探查器告诉我,所有分配都是由该ChannelReader.ReadAsync方法引起的。不幸的是,我无法显示完整的代码,但是由于我在热路径中使用它们,所以我需要不惜一切代价避免分配。

是否有任何替代方案在读/写/获取期间不分配内存并且行为相同(生产者/消费者多线程的并发类)?我怎样才能自己实现一个?

c# multithreading asynchronous producer-consumer system.threading.channels

2
推荐指数
1
解决办法
1387
查看次数

Android / Google Maps API - 计算完整地图的宽度和高度(以像素为单位)

所以我目前正在制作一个基于 GoogleMaps 的游戏。因为我想制作一个相机,所以我需要整个谷歌地图的像素大小。

这就是我的意思:

我实际上指的是尺寸

我已经尝试过了:

    // pre generated by android studios
    // Obtain the SupportMapFragment and get notified when the map is ready to be used.
    mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);

    mapFragment.getMapAsync(this);


    int width = mapFragment.getView().getMeasuredWidth();

    int height = mapFragment.getView().getMeasuredHeight();


    String widthAndHeight = width+" "+height;
Run Code Online (Sandbox Code Playgroud)

但它只返回 null。片段有什么问题吗?还有其他方法可以计算谷歌地图的完整尺寸吗?或者这只是返回当前显示的地图部分的大小?

java android google-maps google-maps-api-3

0
推荐指数
1
解决办法
4129
查看次数

更新我的实体时出现“ConcurrentModificationException”

问题

我使用 hibernate 5.4.11 核心,当我尝试更新大量实体时,我在这里遇到了这个问题。它看起来像一个休眠内部异常。

更新

我用hibernate 5.4.23测试了一下,也出现了同样的异常。我还将我的“mysql连接器”更新到最新版本“8.0.22”,但它也不起作用,同样的例外。

描述

这就是我更新实体的方式,它在另一个线程中运行,这不应该是这里的问题...它基本上是一个用于数据库操作的自己的线程,在该操作期间没有其他数据库操作正在运行。

        // Run the database operation for updating the entities async in a new thread, return updated entities once done
        return CompletableFuture.runAsync(() -> {

            var session = database.openSession();
            session.beginTransaction();

            try {

                // Save identities first
                for (var identity : identities)
                    session.update(identity);

                // Update components, each component-type
                for(var insertedClass : insertationOrder)
                    for (var hbc : componentsPerType.get(insertedClass))
                        session.update(hbc);

                session.flush();
                session.clear();

                session.getTransaction().commit();
            } catch (Exception e){

                var messageComposer = new ExceptionMessageComposer(e);
                GameExtension.getInstance().trace("Update : "+messageComposer.toString()); …
Run Code Online (Sandbox Code Playgroud)

java spring multithreading hibernate jpa

0
推荐指数
1
解决办法
2854
查看次数

JetBrains Rider-生成类似getter / setter的Java?

我一直在寻找时间来寻找一种在JetBrains C#IDE Rider中生成类似Java的getter和setter的方法。

有谁知道我该怎么做才能真正更改那些奇怪的C#getter和setter的布局?

我想让Rider从以下位置生成getter和setter转换:

    public Transform List
    {
        get { return list; }
        set { list = value; }       
    }
Run Code Online (Sandbox Code Playgroud)

对此

public Transform getList(){ return this.list; }
public void setList(Transform list){ this.list = list;  }
Run Code Online (Sandbox Code Playgroud)

c# jetbrains-ide getter-setter rider

-4
推荐指数
1
解决办法
189
查看次数