unity android x86,使用 Unity* 游戏引擎向 Android* 应用添加 x86 支持

概述

在当前基于 Unity* ARM* 的 Android* SDK 游戏中添加原生 x86 支持非常简单。  本文介绍了如何在最新的 Unity 4 或 Unity 5 项目中生成一个包括 x86 和 ARM 库在内的 FAT APK。

英特尔与 Unity 联手将 x86 Android 功能添加到即将公开发行的 Unity 4.6 和 Unity 5。 版本上线后,我们将在 https://software.intel.com/zh-cn/articles/unity 上进行更新。 如果您想提前使用版本 4.5.4,请联系您的英特尔客户经理。

添加 Android* 原生 x86 支持

除了 ARM 之外,Unity 现在可为开发人员提供原生 x86 支持。 当创建使用 Unity 4 或 Unity 5 的 Android build 时,它将自动创建包含 x86 和 ARM 库的 FAT APK。

最佳实践: 按照 Unity 编程实践进行操作,确保项目为最新状态,Unity 软件版本为最新版本。 Android SDK 和 NDK 也需要进行更新,以确保完全兼容。

步骤 1

打开项目,点击 File > Build Settings,打开 Build Settings(图 1)。

0818b9ca8b590ca3270a3433284dd417.png

图 1. File 下拉菜单中的 Build settings

步骤 2

在 Build Settings 内,选择 Android,然后点击 Build(图 2)

0818b9ca8b590ca3270a3433284dd417.png

图 2. Build Settings:确保选中 Android*,然后点击 Build

步骤 3

点击 Build 后,指定保存位置。

就这么简单! 您的 APK 现在包含原生 x86 支持。

总结

正如您所见,使用最新版 Unity 4 或 Unity 5 为 x86 平台创建基于 Android 的游戏非常轻松。 原生 x86 支持可为您的应用提供更出色的性能和更快的加载速度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我会尝试回答你的问题。 首先,要使用Unity脚本实现A*寻路算法,需要在Unity中创建一个脚本,并将其添加到场景中的游戏对象上。 以下是实现A*寻路算法的Unity脚本示例代码: ```csharp using UnityEngine; using System.Collections; using System.Collections.Generic; public class AStarPathfinding : MonoBehaviour { public Transform seeker, target; //起点和终点 Grid grid; //寻路所需的网格 void Awake() { grid = GetComponent<Grid>(); } void Update() { FindPath(seeker.position, target.position); } void FindPath(Vector3 startPos, Vector3 targetPos) { Node startNode = grid.NodeFromWorldPoint(startPos); Node targetNode = grid.NodeFromWorldPoint(targetPos); List<Node> openSet = new List<Node>(); HashSet<Node> closedSet = new HashSet<Node>(); openSet.Add(startNode); while (openSet.Count > 0) { Node currentNode = openSet[0]; for (int i = 1; i < openSet.Count; i++) { if (openSet[i].fCost < currentNode.fCost || (openSet[i].fCost == currentNode.fCost && openSet[i].hCost < currentNode.hCost)) { currentNode = openSet[i]; } } openSet.Remove(currentNode); closedSet.Add(currentNode); if (currentNode == targetNode) { RetracePath(startNode, targetNode); return; } foreach (Node neighbour in grid.GetNeighbours(currentNode)) { if (!neighbour.walkable || closedSet.Contains(neighbour)) { continue; } int newMovementCostToNeighbour = currentNode.gCost + GetDistance(currentNode, neighbour); if (newMovementCostToNeighbour < neighbour.gCost || !openSet.Contains(neighbour)) { neighbour.gCost = newMovementCostToNeighbour; neighbour.hCost = GetDistance(neighbour, targetNode); neighbour.parent = currentNode; if (!openSet.Contains(neighbour)) { openSet.Add(neighbour); } } } } } void RetracePath(Node startNode, Node endNode) { List<Node> path = new List<Node>(); Node currentNode = endNode; while (currentNode != startNode) { path.Add(currentNode); currentNode = currentNode.parent; } path.Reverse(); grid.path = path; } int GetDistance(Node nodeA, Node nodeB) { int dstX = Mathf.Abs(nodeA.gridX - nodeB.gridX); int dstY = Mathf.Abs(nodeA.gridY - nodeB.gridY); if (dstX > dstY) { return 14 * dstY + 10 * (dstX - dstY); } return 14 * dstX + 10 * (dstY - dstX); } } ``` 该脚本中的A*寻路算法会在每次Update()函数调用时寻找从起点到终点的最短路径,并将其保存在网格的路径中。 实现A*寻路算法需要一个网格,该网格由一系列节点组成。每个节点包含了该节点在网格中的位置、该节点到起点的距离(gCost)、

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值