小编sky*_*guy的帖子

Swift,spritekit:如何在游戏结束后重启GameScene?停止滞后?

好吧,所以我在Swift中有一个sprite kit游戏,我在游戏结束后重启我的GameScene时遇到了麻烦.

现在,当用户失去一生时,一个变量gameIsOver被设置为true,它会暂停场景中的特定节点并启动计时器.在此计时器结束后,我移动到我的Game Over场景.从Game Over场景中,用户可以返回家中或重新开始游戏.

以下是我如何通过场景过渡到我的游戏:

    countdown(circle, steps: 120, duration: 5) { 

                //Performed when timer ends
                self.gameSoundTrack.stop()

                let mainStoryboard = UIStoryboard(name: "Main", bundle: nil)
                let vc = mainStoryboard.instantiateViewControllerWithIdentifier("GOViewController")
                self.viewController!.presentViewController(vc, animated: true, completion: nil)

                //Resetting GameScene
                self.removeAllChildren()
                self.removeAllActions()
                self.scene?.removeFromParent()
            self.paused = true
            gameIsOver = false
        }
Run Code Online (Sandbox Code Playgroud)

我在这里暂停我的场景是因为,如果我没有,当重新加载GameScene gameIsOver仍然设置为true我的应用程序崩溃.考虑到我gameIsOverfalse这里,我不知道为什么会这样.

从GameScene转到我的场景游戏并回到GameScene,或者从GameScene转移到我的家庭视图控制器并回到GameScene几次后,我的fps数量下降太多以至于整个游戏都落后于游戏玩法无法实现的程度.

这让我相信,每次我在场景中展示我的游戏时,我都没有正确地移除/处理GameScene.
我相信我遇到了同样的问题:在Swift上"游戏结束"从场景转移到另一个UIView并处理场景?,但我是新手,我无法弄清楚他们是如何解决他们的问题的.

我每次呈现Game Over场景时如何完全重置/删除GameScene以阻止滞后?

sprite-kit swift xcode7 swift2

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

Swift:转换到新场景后释放GameScene?

所以我已经阅读了几个关于此问题的问题,但大多数是在Objective-C中,我没有找到任何直接解决/回答的问题.我是新手编程,所以请彻底解释任何建议.

我需要了解如何在游戏结束后解除分配我的GameScene.我需要这样做的原因是因为在游戏结束后,我转换到新的SKScene(场景中的游戏),当我转换回我的GameScene时,GameScene不会完全重置或者我每次都会生成一个新的GameScene .

我之所以这么说是因为每次游戏结束时我的每秒帧数都会下降并转换回GameScene,所以如果我做了足够多次,我甚至不能再玩游戏了.这是个问题.

我不明白为什么会发生这种情况,因为当我在场景中过渡到我的游戏时,我会删除GameScene中的所有内容:

self.viewController!.performSegueWithIdentifier("goToGameOver", sender: nil)
            self.removeAllChildren()
            self.removeAllActions()
            self.scene?.removeFromParent()
Run Code Online (Sandbox Code Playgroud)

我也在这里阅读:关闭SKScene后,Memory Remains High删除包含SKScene的SKView释放SKScene,所以当我的GameScene和场景游戏都离开时,我从他们的超级视图中删除两个视图,如下所示:

override func viewDidDisappear(animated: Bool) {
        print("its gone")

        self.view.removeFromSuperview()

    }
Run Code Online (Sandbox Code Playgroud)

但是对于每秒减少的帧数并没有任何影响,游戏仍然滞后.我不明白我在做什么,也无法判断场景中的游戏是否是问题,或者我只是不解除GameScene的负责.

如何释放GameScene?我还应该做什么?

编辑:

每次我转换回GameScene时,我的节点数和绘制数都保持不变,所以这似乎不是问题.我尝试在GameScene类中使用它来测试deinit在场景之间转换时是否被调用(我之前没有使用deinit过):

} //<**End of GAMESCENE**

    deinit {
        print("Deinit was called")
    } 
Run Code Online (Sandbox Code Playgroud)

没有任何东西被印刷所以deinit没有被称为.

编辑2:

@alex_p这是我在GameViewController中的内容 -

class GameViewController: UIViewController, SKProductsRequestDelegate, SKPaymentTransactionObserver {

    var scene1: GameScene?
    var scene2: GameScene?
    var skView: SKView?

// Action to present next Scene
    @IBAction func nextSceneAction(sender: AnyObject) {
        print("Next scene")
        // …
Run Code Online (Sandbox Code Playgroud)

sprite-kit swift

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

使用最新的iOS,您可以制作自定义表情符号键盘并插入表情符号INTO TEXT(不是单独的图像)吗?

过去曾多次询问过这个问题,但我无法找到与最新iOS最新的最新答案.当然我觉得这是可能的,我知道过去不是,所以我问 -

是否可以使用Swift制作自定义表情符号(在独立应用程序中或使用自定义键盘)并让用户能够将此自定义表情符号(它将是一个图像)键入SMS并让它输入JUST as TEXT DOES ?

我已阅读http://unicode.org/faq/emoji_dingbats.htmlhttps://www.quora.com/Is-it-possible-to-create-an-emoji-app-for-iOS-with-original-替代符号,我需要知道现在是否以及如何进行1.拍摄图像2.允许用户在短信中键入文本/ unicode字符,而不是像bitmoji或类似应用程序那样的图像附件.

如何处理图像并能够在与文本字符串相同的"文本气泡"中进行处理?这可以在iOS9中完成吗?

ios emoji swift

5
推荐指数
0
解决办法
699
查看次数

Unity - 动画将游戏对象从它产生的地方移开?

好吧,这令人沮丧,但我在预制件上创建了一个动画循环,但是在预制件生成后动画(位置/旋转的变化)运行动画(从而移动预制件)远离预制件生成的位置。

例如,如果我的预制件在原点生成,由于我在设置预制件时将其放置在何处,它会在该位置进行动画处理。

我需要我的预制件来运行动画,但在它产生的地方,而不是我为原始预制件设置动画的地方。我怎样才能解决这个问题?我究竟做错了什么?

我使用 Unity 的动画师制作动画。

animation unity-game-engine

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

React native:组件未定义?无法导入?

好吧,非常新的反应原生在这里,我试图非常简单地导入另一个.js文件,并render()让它在index.ios.js 中的主函数中运行

我到处寻找并试图import and require这样做,但我遇到了错误:

组件未定义

这就是我所拥有的,只是添加了导入行就会出现错误:

import React, { Component } from 'react';
import { Button, Card } from 'react-native-material-design';
import {
  StyleSheet,
  Text,
  View,
  Animated,
  Easing,
  ScrollView,
  RefreshControl,
  AppRegistry
} from 'react-native';
//import { Container, Content } from 'native-base';

import TestClass from "./TestClass";
//var animation = require('./TestClass');

//BODY
export default class SkysReact extends Component {


  render() {
    return (<View style={styles.container}>
    <TestClass/>
    </View>);

    // return (<View style={styles.container}>
    // {this.test()}
    // </View>);
  }
  test() {
  console.log("Hello World") …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-native react-native-ios

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

AR 与 iOS:在场景中放一盏灯会让一切变黑?

好吧,当添加到 Swift/Xcode 中的 ARScene 时,我拼命地在我的对象上实现这种温暖的灯光 - 温暖的灯光和周围的小发光灯:

在此输入图像描述

需要明确的是,我不希望添加到场景中的对象看起来像是属于周围的房间。我希望它们脱颖而出/看起来温暖而发光。ARKit 上的所有教程都会教你如何模仿实际房间的灯光。

Xcode 有几个照明选项,从相机收集的周围环境中提取,因为:

if let lightEstimate = session.currentFrame?.lightEstimate
Run Code Online (Sandbox Code Playgroud)

我可以打印出温暖度、强度等。并且我当前还设置了这些属性来匹配房间的光线:

sceneView.automaticallyUpdatesLighting = true
extension ARSCNView {

    func setup() { //SCENE SETUP
        antialiasingMode = .multisampling4X
        autoenablesDefaultLighting = true
        preferredFramesPerSecond = 60
        contentScaleFactor = 1.3

        if let camera = pointOfView?.camera {
            camera.wantsHDR = true
            camera.wantsExposureAdaptation = true
            camera.exposureOffset = -1
            camera.minimumExposure = -1
            camera.maximumExposure = 3
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过提高对象纹理的发射率,但没有任何效果。添加灯光只会使物体变黑/无颜色。

这里有什么问题吗?

xcode lighting augmented-reality swift arkit

5
推荐指数
2
解决办法
4553
查看次数

仅在Safari上-画布错误:IndexSizeError(DOM异常1):索引不在允许的范围内

我不知道这里发生了什么,但是我有一个画布错误,仅在Safari中发生-Chrome和Firefox都可以。

香港专业教育学院看过这样问题,如索引不在允许的范围内,但我认为它不是同一问题。错误是:

 IndexSizeError (DOM Exception 1): The index is not in the allowed range.
Run Code Online (Sandbox Code Playgroud)

它在这里绘制,仅当我注释掉所有drawImage行时才消失:

this.draw = function (bubbleShape, dx, dy) {

        ctx.fillStyle = this.color;
        if(this.isPerson && pointCollection.points.length > 0 && peopleCollection.points.length > 0) //people
        {
          if(!this.hasBack)
          {
            var img2 = new Image();
            img2.src = `../resources/bod${parseInt((this.ico).match(/[0-9]+/)[0], 10)}.png`;
            var mod = 1.05;
            ctx.drawImage(img2, this.originalPos.x-(this.radius+1.5), this.originalPos.y-this.radius+27, this.radius*mod, this.radius*mod);

          }

          //ctx.fillStyle = "rgba(255, 255, 255, 0)";
          ctx.drawImage(this.img, this.originalPos.x-this.radius, this.originalPos.y-this.radius, this.radius, this.radius);
            this.img.src = this.ico; //GET ICO
        }


        if (bubbleShape …
Run Code Online (Sandbox Code Playgroud)

javascript safari jquery html5 canvas

5
推荐指数
0
解决办法
1648
查看次数

Swift错误:'缺少函数返回'?

我正在创建一个tic tac toe游戏,我遇到了这个错误,我并不理解:"在函数中缺少返回预期返回'(location:String,pattern:String)'".它正在应该返回"algorResults"的代码块上绘制错误,它应该给出在第一行初始化的位置和模式(两个字符串).出了什么问题?请彻底解释一下建议,谢谢!我的代码:

//Function that implements part of AI that sees where a good place to play is:

func rowcheck(value:Int)->(location:String, pattern:String)? {
    var goodFinds = ["011","101","110"]
    var findFuncs = [checktop, checkbottom, checkmidAcross, checkleft, checkmidDown, checkright, checkLRdiag, checkRLdiag]
    for algor in findFuncs {
        var algorResults = algor(value)
        if find(goodFinds,algorResults.pattern) {
            return algorResults
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

swift

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

如何在three.js上叠加HTML文本/按钮?

好的,这里的three.js非常新,但我想通过https://beinternetawesome.withgoogle.com/interland实现Google的目标

看 - 他们有他们的FULL SCREEN Three.js场景和他们的文本,按钮(显然是HTML div,不是通过JS生成的)完全覆盖在顶部.

我查看了 https://discourse.threejs.org/t/trying-to-overlay-a-button-and-text-on-top-of-a-three-js-scene/390/2

和类似的问题,但无法理解这样做的正确方法.我不想在Three.js中生成我的UI元素 - 我只想使用HTML.

到目前为止,我生成了我的Three.js画布并将其添加到我的文档中,以便它获取并保持窗口的整个宽度/高度:

var controls, camera, renderer, scene, container, w, h;
renderer    = new THREE.WebGLRenderer()
// container = document.getElementById('canvas');
container = window;
w = container.innerWidth;
h = container.innerHeight;
renderer.setSize(w, h)
renderer.setPixelRatio( window.devicePixelRatio );
document.body.appendChild(renderer.domElement);
Run Code Online (Sandbox Code Playgroud)

然后使用我现有的HTML:

<body>
    <div id="ui">
    <p id="message">Test to change</p>
</div>
Run Code Online (Sandbox Code Playgroud)

无论我如何使用CSS div或UI div的z索引,我都会将UI div卡在最上面:

在此输入图像描述

如何通过覆盖在我的three.js场景上的HTML来实现Google效果?我究竟做错了什么?

我需要我的画布像Google一样填充整个窗口,并且无法实现预先制作画布HTML元素并尝试在JS中附加所有内容.

html javascript css jquery three.js

4
推荐指数
2
解决办法
8079
查看次数

Sklearn - 绘制分类报告给出与基本平均值不同的输出?

我想利用这个答案如何绘制 scikit 学习分类报告?将 sklearn 分类报告转换为热图。

这一切都与他们的样本报告一起工作,但是我的分类报告看起来略有不同,因此搞砸了功能。

他们的报告(注意平均值/总数):

sampleClassificationReport =             
                   precision    recall  f1-score   support

          Acacia        0.62      1.00      0.76        66
          Blossom       0.93      0.93      0.93        40
          Camellia      0.59      0.97      0.73        67
          Daisy         0.47      0.92      0.62       272
          Echium        1.00      0.16      0.28       413

        avg / total     0.77      0.57      0.49       858
Run Code Online (Sandbox Code Playgroud)

我的报告metrics.classification_report(valid_y, y_pred)

              precision    recall  f1-score   support

           0       1.00      0.18      0.31        11
           1       0.00      0.00      0.00        14
           2       0.00      0.00      0.00        19
           3       0.50      0.77      0.61        66
           4       0.39      0.64      0.49        47 …
Run Code Online (Sandbox Code Playgroud)

python classification machine-learning scikit-learn

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