通过python-libvirt管理KVM虚拟机 源码
版本:0.9.13
libvirt库可真是大,先看看该版本里面都有哪些类和方法,验证过的方法我会用O开头,|开头的标示还没亲自验证过。
- <span style="font-size:18px;">CLASSES
- virConnect
- virDomain
- virDomainSnapshot
- virInterface
- virNWFilter
- virNetwork
- virNodeDevice
- virSecret
- virStoragePool
- virStorageVol
- virStream
- class virConnect
- | __del__(self)
- | __init__(self, _obj=None)
- | baselineCPU(self, xmlCPUs, flags)
- | changeBegin(self, flags)
- | changeCommit(self, flags)
- | changeRollback(self, flags)
- | close(self)
- | compareCPU(self, xmlDesc, flags)
- | createLinux(self, xmlDesc, flags)
- | createXML(self, xmlDesc, flags)
- | defineXML(self, xml)
- | dispatchDomainEventBlockPullCallback(self, dom, path, type, status, cbData)
- | domainEventDeregister(self, cb)
- | domainEventDeregisterAny(self, callbackID)
- | domainEventRegister(self, cb, opaque)
- | domainEventRegisterAny(self, dom, eventID, cb, opaque)
- | domainXMLFromNative(self, nativeFormat, nativeConfig, flags)
- | domainXMLToNative(self, nativeFormat, domainXml, flags)
- | findStoragePoolSources(self, type, srcSpec, flags)
- | getCPUStats(self, cpuNum, flags)
- o getCapabilities(self)
- | getCellsFreeMemory(self, startCell, maxCells)
- o getFreeMemory(self) 6663041024 bytes
- o getHostname(self) client
- o getInfo(self) ['x86_64', 7846, 4, 2394, 1, 1, 4, 1]
- o getLibVersion(self) 9013 ------0.9.13-0ubuntu12.2
- | getMaxVcpus(self, type) 160----type是xml配置文件中domain参数的值
- | getMemoryStats(self, cellNum, flags)
- o getSysinfo(self, flags)
- o getType(self) QEMU
- o getURI(self) qemu:///system
- o getVersion(self) 1002000
- | interfaceDefineXML(self, xml, flags)
- | interfaceLookupByMACString(self, macstr)
- | interfaceLookupByName(self, name)
- o isAlive(self) 1
- o isEncrypted(self) 0
- o isSecure(self) 1
- o listAllDomains(self, flags)
- o listDefinedDomains(self) ['kvm-t1'] 列出offline的domains
- o listDefinedInterfaces(self) []
- o listDefinedNetworks(self) ['default']
- o listDefinedStoragePools(self) []
- | listDevices(self, cap, flags)
- o listDomainsID(self) [2, 3]
- o listInterfaces(self) ['br0', 'lo']
- o listNWFilters(self)
- o listNetworks(self)
- o listSecrets(self)
- o listStoragePools(self)
- o lookupByID(self, id)
- o lookupByName(self, name)
- | lookupByUUID(self, uuid)
- o lookupByUUIDString(self, uuidstr)
- | migrate(self, domain, flags, dname, uri, bandwidth)
- | migrate2(self, domain, dxml, flags, dname, uri, bandwidth)
- | networkCreateXML(self, xmlDesc)
- | networkDefineXML(self, xml)
- | networkLookupByName(self, name)
- | networkLookupByUUID(self, uuid)
- | networkLookupByUUIDString(self, uuidstr)
- | newStream(self, flags)
- | nodeDeviceCreateXML(self, xmlDesc, flags)
- | nodeDeviceLookupByName(self, name)
- | numOfDefinedDomains(self)
- | numOfDefinedInterfaces(self)
- | numOfDefinedNetworks(self)
- | numOfDefinedStoragePools(self)
- | numOfDevices(self, cap, flags)
- | numOfDomains(self)
- | numOfInterfaces(self)
- | numOfNWFilters(self)
- | numOfNetworks(self)
- | numOfSecrets(self)
- | numOfStoragePools(self)
- | nwfilterDefineXML(self, xmlDesc)
- | nwfilterLookupByName(self, name)
- | nwfilterLookupByUUID(self, uuid)
- | nwfilterLookupByUUIDString(self, uuidstr)
- | restore(self, frm)
- | restoreFlags(self, frm, dxml, flags)
- | saveImageDefineXML(self, file, dxml, flags)
- | saveImageGetXMLDesc(self, file, flags)
- | secretDefineXML(self, xml, flags)
- | secretLookupByUUID(self, uuid)
- | secretLookupByUUIDString(self, uuidstr)
- | secretLookupByUsage(self, usageType, usageID)
- | setKeepAlive(self, interval, count)
- | storagePoolCreateXML(self, xmlDesc, flags)
- | storagePoolDefineXML(self, xml, flags)
- | storagePoolLookupByName(self, name)
- | storagePoolLookupByUUID(self, uuid)
- | storagePoolLookupByUUIDString(self, uuidstr)
- | storageVolLookupByKey(self, key)
- | storageVolLookupByPath(self, path)
- | suspendForDuration(self, target, duration, flags)
- | virConnGetLastError(self)
- | virConnResetLastError(self)
- class virDomain
- o ID(self)
- 获取domainID
- o OSType(self)
- 获取domain的type
- o UUID(self)
- 获取domain的UUID
- o UUIDString(self)
- 以字符串的形式获取domian的UUID
- o XMLDesc(self, flags)
- 提供一个描述domian的xml文件,该文件会在后面用来relanuch domain
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | abortJob(self)
- 快速的终止在后台运行的任务,
- | attachDevice(self, xml)
- 创建一个虚拟设备,挂载到后端,类似于热插拔技术,只被允许在活跃的domian上面
- | attachDeviceFlags(self, xml, flags)
- 挂载一个虚拟设备到domian上面,flags标志控制挂载的方式。
- o autostart(self)
- 获取domian的自启动标志
- | blkioParameters(self, flags)
- 获取blkio参数
- | blockInfo(self, path, flags)
- 获取domian的块设备大小的信息
- | blockIoTune(self, disk, flags)
- | blockJobAbort(self, disk, flags)
- 取消一个活跃的块设备....
- | blockJobInfo(self, path, flags)
- 针对一个块任务获取process信息
- | blockJobSetSpeed(self, disk, bandwidth, flags)
- | blockPeek(self, disk, offset, size, flags)
- 读取domian的disk设备的内容
- | blockPull(self, disk, bandwidth, flags)
- | blockRebase(self, disk, base, bandwidth, flags)
- | blockResize(self, disk, size, flags)
- resize一个domian的块设备大小,在domian运行时。
- | blockStats(self, path)
- 获取一个domain的块设备的统计信息
- | blockStatsFlags(self, path, flags)
- 在domain运行时获取块设备的统计参数
- o controlInfo(self, flags)
- 获取一个domain控制接口的详细信息
- | coreDump(self, to, flags)
- o create(self)
- 创建一个domian,如果成功,则会把domian移动到运行domian池中。
- o createWithFlags(self, flags)
- o destroy(self)
- o destroyFlags(self, flags)
- | detachDevice(self, xml)
- | detachDeviceFlags(self, xml, flags)
- | diskErrors(self, flags)
- 获取disk设备的错误信息
- | getCPUStats(self, total, flags)
- 获取运行domian的cpu的统计信息
- | hasCurrentSnapshot(self, flags)
- 决定domian是否做一个snapshot
- | hasManagedSaveImage(self, flags)
- o info(self) [1, 2097152L, 2097152L, 1, 459250000000L]
- 获取一个domian的信息
- | injectNMI(self, flags)
- | interfaceParameters(self, device, flags)
- 获取接口设备的带宽
- o interfaceStats(self, path) (119092654L, 1179917L, 0L, 0L, 723682L, 9669L, 0L, 0L)---interfaceStats('vnet0') vnet0通过XMLDesc获取
- 获取一个domian的接口设备的统计信息
- o isActive(self)
- 判断一个domian是否在运行
- o isPersistent(self)
- 判断一个domian是否和配置文件是强联系的,也就是在shutdown之后他仍旧存在
- o isUpdated(self)
- o jobInfo(self) [0, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L]
- o listAllSnapshots(self, flags)
- 列出所有的快照
- | managedSave(self, flags)
- 该函数会suspend一个domian并且保存他在内存中的东西到磁盘上。
- | managedSaveRemove(self, flags)
- o maxMemory(self)
- 检索分配给该domian的最大物理内存
- o maxVcpus(self)
- 给guest vm提供的最大vcpu数目
- o memoryParameters(self, flags) {'swap_hard_limit': 9007199254740991L, 'hard_limit': 9007199254740991L, 'soft_limit': 9007199254740991L}
- 获取内存参数
- | memoryPeek(self, start, size, flags)
- 读取domain的内存中的数据
- o memoryStats(self) {'actual': 2097152L, 'rss': 375248L}
- 获取一个domain的内存统计信息
- | metadata(self, type, uri, flags)
- | migrate(self, dconn, flags, dname, uri, bandwidth)
- 迁移一个domian从一台host到另一台host
- | migrate2(self, dconn, dxml, flags, dname, uri, bandwidth)
- | migrateGetMaxSpeed(self, flags)
- 获取一个domian当前配置的最大迁移速度
- | migrateSetMaxDowntime(self, downtime, flags)
- | migrateSetMaxSpeed(self, bandwidth, flags)
- | migrateToURI(self, duri, flags, dname, bandwidth)
- | migrateToURI2(self, dconnuri, miguri, dxml, flags, dname, bandwidth)
- o name(self)
- 获取一个domian的公共名称
- | numaParameters(self, flags)
- 获取NUMA参数
- | openConsole(self, dev_name, st, flags)
- | openGraphics(self, idx, fd, flags)
- | pMSuspendForDuration(self, target, duration, flags)
- | pMWakeup(self, flags)
- | pinVcpu(self, vcpu, cpumap)
- | pinVcpuFlags(self, vcpu, cpumap, flags)
- o reboot(self, flags)
- reboot一个domian
- o reset(self, flags)
- 立即reset一个domian
- o resume(self)
- | revertToSnapshot(self, snap, flags)
- o save(self, to)
- | saveFlags(self, to, dxml, flags)
- o schedulerParameters(self) {'vcpu_quota': -1L, 'vcpu_period': 100000L, 'cpu_shares': 1024L}
- 获取调度参数
- o schedulerParametersFlags(self, flags)
- o schedulerType(self)
- 获取调度类型
- | screenshot(self, stream, screen, flags)
- | sendKey(self, codeset, holdtime, keycodes, nkeycodes, flags)
- o setAutostart(self, autostart)
- 配置domian是否在宿主机启动后自启动
- | setBlkioParameters(self, params, flags)
- | setBlockIoTune(self, disk, params, flags)
- | setInterfaceParameters(self, device, params, flags)
- | setMaxMemory(self, memory)
- 动态改变一个domian的最大物理内存
- o setMemory(self, memory)
- 动态改变分配给一个domian的物理内存
- o setMemoryFlags(self, memory, flags)
- | setMemoryParameters(self, params, flags)
- | setMetadata(self, type, metadata, key, uri, flags)
- | setNumaParameters(self, params, flags)
- | setSchedulerParameters(self, params)
- | setSchedulerParametersFlags(self, params, flags)
- | setVcpus(self, nvcpus)
- 动态改变一个domian的vcpus
- | setVcpusFlags(self, nvcpus, flags)
- o shutdown(self)
- 关闭一个domian
- o shutdownFlags(self, flags)
- | snapshotCreateXML(self, xmlDesc, flags)
- | snapshotCurrent(self, flags)
- | snapshotListNames(self, flags)
- | snapshotLookupByName(self, name, flags)
- | snapshotNum(self, flags)
- o state(self, flags)
- 检查一个domian的状态
- o suspend(self)
- suspends一个活跃的domian
- o undefine(self)
- undefine一个domian
- o undefineFlags(self, flags)
- | updateDeviceFlags(self, xml, flags)
- o vcpuPinInfo(self, flags)
- 获取cpu到vcpu的亲和性
- o vcpus(self)
- 获取vcpus的信息
- | vcpusFlags(self, flags)
- 查询一个domian使用了多少个vcpus
- class virDomainSnapshot
- | __del__(self)
- | __init__(self, dom, _obj=None)
- | delete(self, flags)
- 删除一个快照
- | domain(self)
- | getConnect(self)
- | getDomain(self)
- | getName(self)
- | getParent(self, flags)
- | getXMLDesc(self, flags)
- 提供一个描述domian snapshot的xml文件
- | hasMetadata(self, flags)
- | isCurrent(self, flags)
- | listAllChildren(self, flags)
- | listChildrenNames(self, flags)
- | numChildren(self, flags)
- | ref(self)
- class virInterface
- | MACString(self)
- | XMLDesc(self, flags)
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | create(self, flags)
- | destroy(self, flags)
- | isActive(self)
- | name(self)
- | undefine(self)
- class virNWFilter
- | UUID(self)
- | UUIDString(self)
- | XMLDesc(self, flags)
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | name(self)
- | undefine(self)
- class virNetwork
- | UUID(self)
- | UUIDString(self)
- | XMLDesc(self, flags)
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | autostart(self)
- | bridgeName(self)
- | connect(self)
- | create(self)
- | destroy(self)
- | isActive(self)
- | isPersistent(self)
- | name(self)
- | setAutostart(self, autostart)
- | undefine(self)
- class virNodeDevice
- | XMLDesc(self, flags)
- 获取描述device各个方面信息的xml文件
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | destroy(self)
- 破坏device对象,虚拟device会在host的系统中被移除
- | dettach(self)
- | listCaps(self)
- 列出node设备的能力
- | name(self)
- 返回device的名称
- | numOfCaps(self)
- | parent(self)
- | reAttach(self)
- | reset(self)
- class virSecret
- | UUID(self)
- 获取一个secret的UUID
- | UUIDString(self)
- 以字符串的形式获取一个secret的UUID
- | XMLDesc(self, flags)
- 获取一个描述secret的xml文件
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | setValue(self, value, flags)
- 使用secret联合一个值
- | undefine(self)
- 删除一个特定的secret
- | usageID(self)
- | usageType(self)
- | value(self, flags)
- 使用secret获取联合的值
- class virStoragePool
- | UUID(self)
- 获取存储池唯一的UUID
- | UUIDString(self)
- 以字符串的形式获取存储池的UUID
- | XMLDesc(self, flags)
- 获取一个描述存储池各个方面信息的xml文件,
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | autostart(self)
- 获取一个存储池的自启动标志
- | build(self, flags)
- 目前只有文件系统池可以接受VIR_STORAGE_POOL_BUILD_OVERWRITE和VIR_STORAGE_POOL_BUILD_NO_OVERWRITE.
- | connect(self)
- | create(self, flags)
- 创建一个不活跃的存储池
- | createXML(self, xmldesc, flags)
- 用xml文件中描述的存储池创建一个存储卷,不是所有的池都支持创建卷
- | createXMLFrom(self, xmldesc, clonevol, flags)
- 在父存储池中创建一个存储卷,
- | delete(self, flags)
- 删除底层资源,该操作时不可恢复的,
- | destroy(self)
- 破坏一个活跃的存储池,他会使host上的池无效,但是会保持配置文件的联系,
- | info(self)
- 获取存储池的信息,
- | isActive(self)
- 探测一个存储池是否在运行
- | isPersistent(self)
- 判断一个存储池是否是配置文件强联系的,就是在shutdown之后仍旧存在。
- | listVolumes(self)
- 列出存储卷
- | name(self)
- 获取存储池本地唯一的名称
- | numOfVolumes(self)
- 获取池中有多少个存储卷
- | refresh(self, flags)
- 请求存储池更新它包含的存储卷
- | setAutostart(self, autostart)
- 设置自启动标志
- | storageVolLookupByName(self, name)
- 在一个存储池中获取一个指向存储卷的指针
- | undefine(self)
- 取消一个不活跃的存储池
- class virStorageVol
- | XMLDesc(self, flags)
- 获取一个描述各个卷存储的xml文件
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | connect(self)
- | delete(self, flags)
- 在存储池中删除卷存储。
- | download(self, stream, offset, length, flags)
- 以流的形式下载卷中的内容,如果length是0,则在offset后面的内容都会被下载。这个调用是异步的
- | info(self)
- 获得关于卷存储的信息,
- | key(self)
- 获取卷存储的key,这个值是全局唯一的,所以相同的卷的值相同。
- | name(self)
- 获取存储卷的名称,该名称在存储池中是唯一的。
- | path(self)
- 获取存储卷的路径,取决于池的配置。既可以固定分配给host也可以动态的分配。
- | resize(self, capacity, flags)
- 改变存储卷vol的容量到capacity,如果新的容量需求超过了空闲的池容量,则会失败。
- | storagePoolLookupByVolume(self)
- 查找一个指定的卷包含在那个存储池中
- | upload(self, stream, offset, length, flags)
- 把一个流的内容上传到卷中。如果offset+length的大小超过了卷的容量,则会失败。
- | wipe(self, flags)
- | wipePattern(self, algorithm, flags)
- 和virStorageVolWipe类似, 但是可以选择不同的wiping 算法。
- class virStream
- | __del__(self)
- | __init__(self, conn, _obj=None)
- | abort(self)
- | connect(self)
- | download(self, vol, offset, length, flags)
- | eventAddCallback(self, events, cb, opaque)
- | eventRemoveCallback(self)
- | eventUpdateCallback(self, events)
- | finish(self)
- | recv(self, nbytes)
- | recvAll(self, handler, opaque)
- | screenshot(self, domain, screen, flags)
- | send(self, data)
- | sendAll(self, handler, opaque)
- | upload(self, vol, offset, length, flags)
- FUNCTIONS
- getVersion(name=None) 如果没有name参数,或者name参数的值是None,则会返回libvirt的version,如果name参数的值是libvirt的lib库中的一个连接,则会返回一个元祖(library version,driver version)。如果name参数传入的是一个不存在的驱动,则会返回'no support for hypervisor'.
- open(name)
- 这个函数应该在建立到Hypervisor和xen store的连接时首先被调用。
- openAuth(uri, auth, flags)
- openReadOnly(name)
- 该函数建立一个到lib库函数的受限制的连接,The set of APIs usable are then restricted
- on the available methods to control the domains。查看virConnectOpen了解环境变量,他们可以影响opening 驱动。
- registerErrorHandler(f, ctx)
- 注册一个python函数用来报告error
- virEventAddHandle(fd, events, cb, opaque)
- 注册一个回调函数,用来监控文件句柄
- @fd: file handle to monitor for events
- @events: bitset of events to watch from virEventHandleType constants
- @cb: callback to invoke when an event occurs
- @opaque: user data to pass to callback
- virEventAddTimeout(timeout, cb, opaque)
- 为时间事件注册一个回调函数
- @timeout: time between events in milliseconds
- @cb: callback to invoke when an event occurs
- @opaque: user data to pass to callback
- virEventRegisterDefaultImpl()
- virEventRegisterImpl(addHandle, updateHandle, removeHandle, addTimeout, updateTimeout, removeTimeout)
- virEventRemoveHandle(watch)
- virEventRemoveTimeout(timer)
- virEventRunDefaultImpl()
- 运行一个迭代的循环事件,
- virEventUpdateHandle(watch, events)
- virEventUpdateTimeout(timer, timeout)
- virGetLastError()
- 提供一个获得最近发生在lib库级别的错误信息的指针
- virInitialize()
- 初始化lib库,调用该函数是强制的,除非你在第一次API调用时,使用的是virconnectopen*
- virResetLastError()
- 重置最后一次在lib库级别获得的错误日志,该错误对象保存在本地的线程中</span>
通过python-libvirt管理KVM虚拟机 源码的更多相关文章
- Python内存管理机制-《源码解析》
Python内存管理机制 Python 内存管理分层架构 /* An object allocator for Python. Here is an introduction to the layer ...
- 使用 libvirt创建和管理KVM虚拟机
1. libvirt介绍 Libvirt是一个软件集合,便于使用者管理虚拟机和其他虚拟化功能,比如存储和网络接口管理等等.Libvirt概括起来包括一个API库.一个 daemon(libv ...
- 管理KVM虚拟机(二)
管理KVM虚拟机 工具:libvirt 官网:http://libvirt.org/ 介绍:Libvirt 库是一种实现 Linux 虚拟化功能的 Linux® API,它支持各种虚拟机监控程序,包括 ...
- 『学了就忘』Linux服务管理 — 79、源码包安装的服务管理
目录 1.源码包服务的启动管理 2.源码包服务的自启动管理 3.让源码包服务被服务管理命令识别 1.源码包服务的启动管理 # 通过源码包的安装路径,找到该服务的启动脚本, # 也就是获得该服务的启动脚 ...
- 使用libvirt管理KVM(一)
一. 安装和配置libvirt,源码下载http://www.qemu-project.org/download/#source. 二. 从包和源码包进行安装libvirt. 1. 在ubuntu系统 ...
- Linux 中使用 virsh 管理 KVM 虚拟机 (转)
术语 虚拟化指的是:在相同的物理(硬件)系统上,同时运行多个操作系统,且这几个系统相互隔离的可能性,而那个硬件在虚拟化架构中被称作宿主机(host).虚拟机监视器(也被称为虚拟机管理程序(hyperv ...
- Qemu/kvm虚拟化源码解析学习视频资料
地址链接:tao宝搜索:Linux云计算KVM Qemu虚拟化视频源码讲解+实践https://item.taobao.com/item.htm?ft=t&id=646300730262 L ...
- nova创建虚拟机源码分析系列之五 nova源码分发实现
前面讲了很多nova restful的功能,无非是为本篇博文分析做铺垫.本节说明nova创建虚拟机的请求发送到openstack之后,nova是如何处理该条URL的请求,分析到处理的类. nova对于 ...
- 13行代码实现:Python实时视频采集(附源码)
一.前言 本文是<人脸识别完整项目实战>系列博文第3部分:程序设计篇(Python版),第1节<Python实时视频采集程序设计>,本章内容系统介绍:基于Python+open ...
随机推荐
- 转载:librdkafka问题总结
使用librdkafka过程中,遇到的一些问题,解决办法! 暂时先转载:form:http://blog.csdn.net/lybingo/article/details/52808192?locat ...
- linux下网络配置小节[from 老男孩的linux运维笔记]
对于linux高手看似简单的网络配置问题,也许要说出所以然来也并不轻松,因此仍然有太多的初学者徘徊在门外就不奇怪了, 这里,老男孩老师花了一些时间总结了这个文档小结,也还不够完善,欢迎大家补充,交流. ...
- WebDriver基本操作入门及UI自动化练手页面
在这里集中了我们在做UI自动化时常见的一些控件操作.希望能对新手有帮助. 下载地址:http://files.cnblogs.com/zhangfei/demo.rar package com.tes ...
- IT系统故障引起的一个事故的思考
记得几年前在我以前工作过的一个公司,因为系统的一个审批流突然中断,而且也没有在系统中触发邮件和短信等提示消息,而且我们的相关的审批人员和发 起人也没有在意.直到流程发起的同事在采购物品即将要使用的前2 ...
- C++题目一道: 重载`->': 您真的懂成员访问运算符的重载吗?
原题目在这里: http://hi.baidu.com/shilyx/item/672736e14a14a90c64db003a 要求: //给出类Test的定义和实现,使程序编译通过, //并且ma ...
- 【BZOJ2395】【Balkan 2011】Timeismoney 最小乘积生成树
链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网 ...
- vs 2017打包安装包(印象深刻)
Visual Studio Install 打包安装项目2017 以下是具体步骤 一.安装环境 1.下载:链接地址 2.安装vs2017的时候需要安装依赖 .NET framework 4.6 .下载 ...
- Oracle多表关联如何更新多个字段
注意点:1.被update主表一定要加上过滤条件.2.查询出来更新结果集,同时也要作为被更新主表的条件,作为同步大家都是更新这部分数据.update student stu set (stu.name ...
- spring(三) spring事务操作
前面一篇博文讲解了什么是AOP.学会了写AOP的实现,但是并没有实际运用起来,这一篇博文就算是对AOP技术应用的进阶把,重点是事务的处理. --wh 一.jdbcTemplate 什么是JdbcTem ...
- 【Unity】7.5 移动设备输入
分类:Unity.C#.VS2015 创建日期:2016-04-21 一.简介 在iOS和Android系统中,操作都是通过触摸来完成的.Input类中对触摸操作的方法或变量如下图所示: 通过GetT ...