UIScrollView con UIPageControl no queda centrado correctamente SWIFT

Actualmente estoy necesitando tener un UIPageControl haciendo uso del UIScrollView para poder tener un efecto de carrosuel introducir la descripción de la imagen aquí

Mi problema es que las UIView no quedan centradas cada una un ejemplo mas practico

introducir la descripción de la imagen aquí

Se me queda parte de la segunda vista como parte de la primera

Mis clases son :

class InitialViewController: CommonViewController, UIScrollViewDelegate{  @IBOutlet weak var pageControl: UIPageControl!  @IBOutlet weak var scrollView: UIScrollView!{     didSet{         scrollView.delegate = self     } }   var presenter = InitialPresenter() var slides:[Slide] = [];              override func viewDidLoad() {     super.viewDidLoad()       self.slides = createSlides()     self.setupSlideScrollView(slides: slides)     self.pageControl.numberOfPages = slides.count     self.pageControl.currentPage = 0     self.view.bringSubview(toFront: pageControl) }  override func viewWillAppear(_ animated: Bool) {     super.viewWillAppear(animated)     self.presenter.wfm = WorkflowManager.init(navigationController: self.navigationController) }   func createSlides() -> [Slide] {      let slide1:Slide = Bundle.main.loadNibNamed("ViewSlide", owner: self, options: nil)?.first as! Slide     slide1.imgCenterSlide.image = UIImage(named: "icono_transferencia_carrusel")     slide1.strLblTitle.text = NSLocalizedString("strLblTitleSlideOne_INTIAL",comment:"")     slide1.strLblSubTitle.text = NSLocalizedString("strLblSubTitleSlideOne_INTIAL",comment:"")      let slide2:Slide = Bundle.main.loadNibNamed("ViewSlide", owner: self, options: nil)?.first as! Slide     slide2.imgCenterSlide.image = UIImage(named: "icono_pago_carrusel")     slide2.strLblTitle.text = NSLocalizedString("strLblTitleSlideTwo_INTIAL",comment:"")     slide2.strLblSubTitle.text = NSLocalizedString("strLblSubTitleSlideTwo_INTIAL",comment:"")      let slide3:Slide = Bundle.main.loadNibNamed("ViewSlide", owner: self, options: nil)?.first as! Slide     slide3.imgCenterSlide.image = UIImage(named: "icono_consulta_carrusel")     slide3.strLblTitle.text = NSLocalizedString("strLblTitleSlideTree_INTIAL",comment:"")     slide3.strLblSubTitle.text = NSLocalizedString("strLblSubTitleSlideTree_INTIAL",comment:"")      let slide4:Slide = Bundle.main.loadNibNamed("ViewSlide", owner: self, options: nil)?.first as! Slide     slide4.imgCenterSlide.image = UIImage(named: "icono_simulador_carrusel")     slide4.strLblTitle.text  = NSLocalizedString("strLblTitleSlideFour_INTIAL",comment:"")     slide4.strLblSubTitle.text = NSLocalizedString("strLblSubTitleSlideFour_INTIAL",comment:"")      slide1.strLblTitle.textColor = Utils.Color.BlueLabelText     slide1.strLblSubTitle.textColor = Utils.Color.BlueLabelText      slide2.strLblTitle.textColor = Utils.Color.BlueLabelText     slide2.strLblSubTitle.textColor = Utils.Color.BlueLabelText      slide3.strLblTitle.textColor = Utils.Color.BlueLabelText     slide3.strLblSubTitle.textColor = Utils.Color.BlueLabelText      slide4.strLblTitle.textColor = Utils.Color.BlueLabelText     slide4.strLblSubTitle.textColor = Utils.Color.BlueLabelText         return [slide1, slide2, slide3, slide4] }  func setupSlideScrollView(slides : [Slide]) {     scrollView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: view.frame.height)     scrollView.contentSize = CGSize(width: view.frame.width * CGFloat(slides.count), height: view.frame.height)     scrollView.isPagingEnabled = true      for i in 0 ..< slides.count {         slides[i].frame = CGRect(x: view.frame.width * CGFloat(i), y: 0, width: view.frame.width, height: view.frame.height)         scrollView.addSubview(slides[i])     } }  /*  * default function called when view is scolled. In order to enable callback  * when scrollview is scrolled, the below code needs to be called:  * slideScrollView.delegate = self or  */ func scrollViewDidScroll(_ scrollView: UIScrollView) {     let pageIndex = round(scrollView.contentOffset.x/view.frame.width)     pageControl.currentPage = Int(pageIndex)      let maximumHorizontalOffset: CGFloat = scrollView.contentSize.width - scrollView.frame.width     let currentHorizontalOffset: CGFloat = scrollView.contentOffset.x      // vertical     let maximumVerticalOffset: CGFloat = scrollView.contentSize.height - scrollView.frame.height     let currentVerticalOffset: CGFloat = scrollView.contentOffset.y      let percentageHorizontalOffset: CGFloat = currentHorizontalOffset / maximumHorizontalOffset     let percentageVerticalOffset: CGFloat = currentVerticalOffset / maximumVerticalOffset       /*      * below code changes the background color of view on paging the scrollview      */     //        self.scrollView(scrollView, didScrollToPercentageOffset: percentageHorizontalOffset)       /*      * below code scales the imageview on paging the scrollview      */     let percentOffset: CGPoint = CGPoint(x: percentageHorizontalOffset, y: percentageVerticalOffset)   }     func scrollView(_ scrollView: UIScrollView, didScrollToPercentageOffset percentageHorizontalOffset: CGFloat) {     if(pageControl.currentPage == 0) {         //Change background color to toRed: 103/255, fromGreen: 58/255, fromBlue: 183/255, fromAlpha: 1         //Change pageControl selected color to toRed: 103/255, toGreen: 58/255, toBlue: 183/255, fromAlpha: 0.2         //Change pageControl unselected color to toRed: 255/255, toGreen: 255/255, toBlue: 255/255, fromAlpha: 1           pageControl.pageIndicatorTintColor = Utils.Color.BlueLabelText            slides[pageControl.currentPage].backgroundColor = Utils.Color.LigthViewBackGround          let pageSelectedColor: UIColor = fade(fromRed: 81/255, fromGreen: 36/255, fromBlue: 152/255, fromAlpha: 1, toRed: 103/255, toGreen: 58/255, toBlue: 183/255, toAlpha: 1, withPercentage: percentageHorizontalOffset * 3)         pageControl.currentPageIndicatorTintColor = Utils.Color.BlueLabelText     } }   func fade(fromRed: CGFloat,           fromGreen: CGFloat,           fromBlue: CGFloat,           fromAlpha: CGFloat,           toRed: CGFloat,           toGreen: CGFloat,           toBlue: CGFloat,           toAlpha: CGFloat,           withPercentage percentage: CGFloat) -> UIColor {      let red: CGFloat = (toRed - fromRed) * percentage + fromRed     let green: CGFloat = (toGreen - fromGreen) * percentage + fromGreen     let blue: CGFloat = (toBlue - fromBlue) * percentage + fromBlue     let alpha: CGFloat = (toAlpha - fromAlpha) * percentage + fromAlpha      // return the fade colour     return UIColor(red: red, green: green, blue: blue, alpha: alpha) } 

}

Mi clase Slide es la siguiente

class Slide: UIView {   @IBOutlet weak var strLblTitle: UITextView!  @IBOutlet weak var imgCenterSlide: UIImageView!  @IBOutlet weak var strLblSubTitle: UITextView! @IBOutlet weak var viewBackGround: UIView! 

}

y mis contrainsts son

introducir la descripción de la imagen aquí

introducir la descripción de la imagen aquí

Desde ya cualquuier ayuda es bienvenida no entiendo porque no puede quedar cada view centrado

No puedo alinear correctamente los divs

necesito ayuda al alinear un div, tengo 2 divs intento alinearlos verticalmente y no quedan: en los divs quiero poner una imagen de una persona en primer plano, y una frace que aya dicho al lado de la imagen (La imagen a la izquierda y el texto a la derecha) le agrege la decoracion de la esquina doblada como una hoja de papel y le agrege una sombra muy leve que apenas se nota, ahora quiero que los dos divs esten separados y centrados de todos los lados de forma de que quede todo simetrico (Pongan en patalla completa el codigo para verlo)

Codigo:

				.toping{ 					width: 100%; 				} 				.presentation { 					float: left; 				-webkit-box-shadow: 4px 6px 52px -9px rgba(0,0,0,0.34); 				-moz-box-shadow: 4px 6px 52px -9px rgba(0,0,0,0.34); 					box-shadow: 4px 6px 52px -9px rgba(0,0,0,0.34);   					background: none repeat scroll 0 0 #97C02F; /* color de fondo */    				    color: #FFFFFF; /* color de texto */                     margin: 2em auto;                     overflow: hidden;                     padding: 1em 1.5em;                     position: relative;                     width: 480px; /* ancho */ 				}        		    .presentation:before {                  		 background: none repeat scroll 0 0 #658E15; /* color esquina */                  			 border-color: #FFFFFF #FFFFFF #658E15 #658E15; /* color de borde */                  		 border-style: solid;                 	  border-width: 0 16px 16px 0;                		   content: "";                  		 display: block;                 		  position: absolute;  						  right: 0;   						  top: 0;  						  width: 0; 				} 				.presentation2 { 					float: left; 					-webkit-box-shadow: 4px 6px 52px -9px rgba(0,0,0,0.34); 					-moz-box-shadow: 4px 6px 52px -9px rgba(0,0,0,0.34); 					box-shadow: 4px 6px 52px -9px rgba(0,0,0,0.34);   					background: none repeat scroll 0 0 #97C02F; /* color de fondo */    				    color: #FFFFFF; /* color de texto */                     margin: 2em auto;                     overflow: hidden;                     padding: 1em 1.5em;                     position: relative;                     width: 480px; /* ancho */ 				}        		    .presentation2:before {                  		 background: none repeat scroll 0 0 #658E15; /* color esquina */                  			 border-color: #FFFFFF #FFFFFF #658E15 #658E15; /* color de borde */                  		 border-style: solid;                 	  border-width: 0 16px 16px 0;                		   content: "";                  		 display: block;                 		  position: absolute;  						  right: 0;   						  top: 0;  						  width: 0; 				}
		<div class="toping"> 			<div class="presentation"> 				<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 				tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 				quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 				consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 				cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 				proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</span>				 			</div> 			<div class="presentation2"> 				<span>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod 				tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, 				quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo 				consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse 				cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non 				proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</span>				 			</div>

Se fizer ionic serve o meu site/app funciona correctamente como devia, colocando o resultado do www no public_html a app deixa de funcionar

sou novo na programação e ando a aprender a fazer sites/apps em IONIC 4. Até agora só fiz uma e ando encravado na parte de colocar on-line.

No desenvolvimento sempre que no terminal faço ionic serve a app corre normalmente fazendo os pedidos a uma api que funciona normalmente.

Mas quando faço ionic build --prod --release , copio o conteudo da pasta www e para um public_html do site de destino.

https://tarefasamostra.000webhostapp.com/tarefas

E ai deixa de funcionar e isto é o que aparece.

inserir a descrição da imagem aqui

NOTA: se entrar em https://tarefasamostra.000webhostapp.com/ ele encaminha para a pagina de tarefas a mesma pois ela esta definida por default como homepage, qualquer botão que se pressione ele exibe o erro que esta na imagem.

Será que me esta a escapar algo? quando testo no vscode ele funciona.

La hora no me guarda correctamente

lo que sucede es que estoy tratando de guardar la hora de la siguiente manera:

$  hoy = date("Y-m-d H:i:s"); 

El día me lo guarda correctamente, mientras que la hora me la guarda mal, ya que un ejemplo que realice, en mi computadora dice que son las 07:36 a.m mientras que en el formulario (que esta conectado con PHP y guardando en PhpMyAdmin) me guarda un horario con ventaja de 5 horas…

Y no he podido arreglarlo…

Si me colaboran muchas gracias.

TypeCaught Error: Por que no me funciona correctamente? #JS

Vereis, estoy intentando hacerle un innerHTML a un div que tengo declarado en el index pero no sé por qué narices no me está funcionando como debería. No consigo dar con el error así que dejo aqui el código a ver si alguien es capaz de identificarlo y tambien una captura del error que me devuelve la consola.

Código

let alquiler = { juegos:     [         {             caratula: "img/blood.jpg",             titulo: "BloodBorne",             desarrolladora: "From Software"         },         {             caratula: "img/gow.jpg",             titulo: "God Of War",             desarrolladora: "Sony Santa Monica"         }     ] };  let texto = ""; for (let i = 0; 0 < alquiler.juegos.length; i++) {     texto += "<div id='juego'><p>'" + alquiler.juegos[i].titulo + "'<p><img      src='" + alquiler.juegos[i].caratula + "'><p>Desarrolladora: '" +      alquiler.juegos[i].desarrolladora + "'</p></div>"; } console.log(texto); document.getElementById('juego').innerHTML = texto; 

error

system (“clear”) no funciona correctamente

Buen día, estoy creando un código en C que me permita obtener información sobre los productos que se han vendido en un día en una tienda. Sucede que cuando el usuario ingresa una opción de Categoría inválida, el código limpia la pantalla y vuelve a pedir la información.

Este es el código:

#include <stdio.h> //Standard input-output #include <stdlib.h> #include <stdbool.h>  void mensaje_inicial() {  printf("\t\tEjercicio 4\n"); printf("\n"); //Obtencion de la informacion printf("Los productos pertenecen a tres categorias:\n"); printf("Categoria A: 20.000 y 80.000\n"); printf("Categoria B: 8.000 y 50.000\n"); printf("Categoria C: 100.000 y 200.000\n");  printf("Nota: Para ingresar la categoria, debe elegir letras     mayusculas.\n"); printf("Ejemplo: A, B o C."); printf("\n"); printf("Para ingresar el valor del articulo, no utilice ni puntos ni     comas.\n"); printf("Ejemplo: Si desea ingresar 100.000 pesos, ingrese: 100000"); printf("\n"); } int main (){  int cantidad_vendida = 0;  mensaje_inicial();  //Obtencion de la cantidad de productos vendidos printf("Ingrese la cantidad de productos vendidos en el dia: "); scanf("%i", &cantidad_vendida); printf("\n");  //Creacion de arrays para el almacenamiento de valores //1. Nombres char nombres[cantidad_vendida][100]; char nombre;  //2. Id de productos char id_producto[cantidad_vendida][100];  //3. Categoria del productos char categoria_producto[cantidad_vendida]; char categoria;  //4. Valor del producto //int valor_producto[cantidad_vendida]; //float valor = 0.0;  //Obtencion del nombre del producto for (int i = 0; i < cantidad_vendida; i++) {   printf("\n");   //Obtiene el nombre del producto   printf("Ingrese el nombre del producto %i: ", i+1);   scanf(" %s", &nombres[i]);    //Obtiene el id del producto   printf("Ingrese el id del producto %i: ", i+1);   scanf(" %s", &id_producto[i]);    //Obtiene la categoria del producto   //getchar();   bool verificacion = false;   while(verificacion == false){     printf("Ingrese la categoria del producto %i: ", i+1);     scanf(" %c", &categoria);     getchar();     if ((categoria == 'A')||(categoria == 'B')||(categoria == 'C')) {       verificacion = true;     } else {       system ("clear"); //Se usa clear porque cls no es portable       mensaje_inicial();       printf("\n");       printf("No ha ingresado una categoria correcta.\n");     }   }   categoria_producto[i]=categoria; }  //IMPRESION DE TODA LA INFORMACION for (int i = 0; i < cantidad_vendida; i++) {   printf("ELEMENTO %i\n", i+1);   printf("Nombre: %s\n", nombres[i]);   printf("Id: %s\n", id_producto[i]);   printf("Categoria: %c\n", categoria_producto[i]); }  return 0; } 

Cuando la persona no ingresa una opción correcta, limpio la pantalla e imprimo el mensaje inicial nuevamente pero por algún motivo aún queda una línea de texto en la parte superior de la pantalla y no logro entender por qué ya que esa línea debió ser eliminada luego de haber ejecutado system ("clear") y antes de solicitar que ingrese una opción correcta nuevamente…

Vean la primera línea:

Ver la primera línea

Muchas gracias de antemano!

No consigo que el $_FILE me suba el archivo correctamente

El problema es que yo he creado el siguiente formulario:

<form action="" method="get"> 	<div class="select"> 		<input name="u" type="radio" value="meme" class="memeSelect" <?php echo $  selectMeme ?>> 		<label for="meme">Meme</label> 		<input name="u" type="radio" value="plantilla" class="plantillaSelect" <?php echo $  selectPlantilla ?>> 		<label for="plantilla">Plantilla</label> 		<input type="submit" class="invisible selectMemePlantilla"> 	</div> </form>  <form enctype="multipart/form-data" action="<?php echo htmlspecialchars($  _SERVER["PHP_SELF"]); ?>" method="post"> 	<div class="meme <?php echo $  invisibleMeme ?>"> 		<input type="hidden" name="MAX_FILE_SIZE" value="20000"/> 		<input type="file" class="file" name="file" accept="image/png, image/jpeg, image/gif, image/pjpeg"> 		<h2>Elije las clases para el meme</h2> 		<div class="clases"> 			<input type="checkbox"> 			<input type="checkbox"> 			<input type="checkbox"> 			<input type="checkbox"> 		</div> 		<span><?php echo $  error ?></span> 		<input type="submit" name="uploadBtn" value="Upload"> 	</div> 	<div class="plantilla <?php echo $  invisiblePlantilla ?>"> 		<input type="hidden" name="MAX_FILE_SIZE" value="20000"/> 		<input type="file" class="file" name="file" accept="image/png, image/jpeg, image/gif, image/pjpeg"> 		<h2>Elije las clases para la plantilla</h2> 		<div class="clases"> 			<input type="checkbox"> 			<input type="checkbox"> 			<input type="checkbox"> 			<input type="checkbox"> 		</div> 		<span><?php echo $  error ?></span> 		<input type="submit" name="uploadBtn" value="Upload"> 	</div> </form>

Como podrán ver la pagina para subir las imágenes tiene primero un formulario get para ir a la pagina de subir memes o plantillas y luego un post para subir las imágenes al servidor.

El primer formulario funciona perfectamente, pero el segundo no, siempre me salta el error 4 que no se ha subido ningún archivo.

Creé otro archivo para ver si había algún problema con el servidor o algo pero todo funcionaba bien. El problema debe estar en intentar usar el get, pero no se como arreglarlo.

El PHP para el formulario de subir imágenes:

if (isset($  _POST['uploadBtn']) && $  _POST['uploadBtn'] == 'Upload') {     if (isset($  _FILES['file']) && $  _FILES['file']['error'] === UPLOAD_ERR_OK) {          $  fileTmpPath           = $  _FILES['file']['tmp_name'];         $  fileName              = $  _FILES['file']['name'];         $  fileSize              = $  _FILES['file']['size'];         $  fileType              = $  _FILES['file']['type'];         $  fileNameCmps          = explode(".", $  fileName);         $  fileExtension         = strtolower(end($  fileNameCmps));         $  newFileName           = md5(time() . $  fileName) . '.' . $  fileExtension;         $  allowedfileExtensions = array('jpg', 'gif', 'png', 'zip', 'txt', 'xls', 'doc');         echo $  fileName;          if (in_array($  fileExtension, $  allowedfileExtensions)) {             $  uploadFileDir = 'img/';             $  dest_path = $  uploadFileDir . $  newFileName;             echo "vamoos";              if(move_uploaded_file($  fileTmpPath, $  dest_path)) {                 $  message ='File is successfully uploaded.';                 $  _SESSION['message'] = $  message;                 echo $  message;             }             else {                 $  message = 'There was some error moving the file to upload directory. Please make sure the upload directory is writable by web server.';                 $  _SESSION['message'] = $  message;                 echo "3";             }         }     }else {echo "algo no funciona1"; } }else {echo "algo no funciona"; }  

Y el de abajo es el del formulario get:

$  selectMeme = $  selectPlantilla = "";     $  invisibleMeme = $  invisiblePlantilla = "invisible";     $  error = $  selected = "";     if ( isset($  _GET['u']) ) {          if ( $  _GET['u'] == "meme" ) {             $  selected           = "memes";             $  selectMeme         = "checked";             $  invisibleMeme      = "";             $  selectPlantilla    = "";             $  invisiblePlantilla = "invisible";          } else {             $  selected           = "plantillas";             $  selectPlantilla    = "checked";             $  invisiblePlantilla = "";             $  selectMeme         = "";             $  invisibleMeme      = "invisible";         }     } 

Unity – Métodos de botones no se establecen correctamente

Tratare ser lo mas especifico posible.

Estoy creando la galería de un visualizador de vídeos .mp4 y fotos .jpg en Unity; En la galería si selecciono el botón Add, me abre un explorador donde yo podre buscar el archivo foto o vídeo y guardar la referencia para asignarlo al botón, si por ejemplo agrego un vídeo y le doy reproducir funciona sin problemas, si hago el mismo procedimiento en otro botón con lo mencionado anteriormente pero esta vez agregando una foto igual se reproduce sin problemas.

Captura de cuando agrego un video:

introducir la descripción de la imagen aquí

Captura de cuando agrego una foto:

introducir la descripción de la imagen aquí

Mi problema esta en cuando ya tengo agregado ya reproduje la foto y quiero volver a reproducir el vídeo ya no me deja reproducirlo porque de alguna forma el botón tiene asignado el método para reproducir fotos, si agrego mas fotos no hay problema. los mismo pasa si agrego primero fotos y después vídeos.

Realmente no encuentro como solucionarlo, llevo aproximadamente 3 días atorado con este problema.

Adjunto los códigos con los que estoy trabajando.

Clase 1:

public GameObject _photoSphere; public GameObject _videoSphere;  public TextMeshProUGUI[] _buttonFileName;  //Botones para la interfaz, agregar, borrar y plays public Button[] _addFile; public Button[] _deleteFile; public Button[] _playFile;  //Iconos para los archivos public SVGImage[] _photoIcon; public SVGImage[] _videoIcon;  #region Metodos para inicializacion  private void Start() {     AddFileListenerOnClick();     DeleteFileListenerOnClick();     PlayFilesOnClick();         }  #endregion  #region Metodos para botones  //Asiganamos metodo para abrir el explorador de archivo al Metodo OnClick _addFile basandonos en el index seleccionado public void AddFileListenerOnClick() {     for ( int i = 0; i < _addFile.Length; i++ )     {         int tempInt = i + 0;         _addFile[i].onClick.AddListener( () => _vRMEDExplorerScript.OpenFileBrowser( tempInt ) );     } }  public void DeleteFileListenerOnClick() {     for (int i = 0; i < _addFile.Length; i++)     {         int tempInt = i + 0;         //_deleteFile[i].onClick.AddListener(() => _galleryControlsRPC.DeleteFileName(tempInt));     } }  //Asiganamos metodo para reproducir archivo al Metodo OnClick de PlayFliesOnClick basandonos en el index seleccionado public void PlayFilesOnClick() {     for (int i = 0; i < _playFile.Length; i++)     {         int tempInt = i + 1;         _playFile[i].onClick.AddListener(() => PlayFile(tempInt));     } }  //Metodo que manda la instruccion de reproducir public void PlayFile(int playIndex) {     var video = Array.FindIndex(_loadVideoFileScript._videoFiles, row => row.Contains(".mp4"));     var photo = Array.FindIndex(_loadPhotoFileScript._photoFiles, row => row.Contains(".jpg"));      if (_galleryControlsRPC.isVideo == true)     {         for (int i = 0; i < _loadVideoFileScript._videoFiles.Length; i++)         {             if (video == i)             {                 VideoReady(playIndex);             }         }     }      else if (_galleryControlsRPC.isPhoto == true)     {         for (int i = 0; i < _loadPhotoFileScript._photoFiles.Length; i++)         {             if (photo == i)             {                 PhotoReady(playIndex);             }         }     } }  private void VideoReady(int videoReadyIndex) {             _galleryControlsRPC._filePlayIndex = videoReadyIndex;     _galleryControlsRPC.SendRpcSetPlayVideo(_galleryControlsRPC._filePlayIndex);      _photoSphere.SetActive(false);     _videoSphere.SetActive(true); }  private void PhotoReady(int photoReadyIndex) {             _galleryControlsRPC._filePlayIndex = photoReadyIndex;     _galleryControlsRPC.PlayPhoto(_galleryControlsRPC._filePlayIndex);     _ClassPlayer._VRMEDPlayer.CloseVideo();      _photoSphere.SetActive(true);     _videoSphere.SetActive(false); }  //Este metodo se encarga de buscar en la lista principal los archivos con extencion //.jpg y mp4 para almacenarlos en sus respectivas listas public void AddFileToPlay() {     if (_loadVideoFileScript._videoFiles[_galleryControlsRPC._fileExplorerIndex].Contains(".mp4"))     {         for (int i = 0; i < _loadVideoFileScript._videoFiles.Length; i++)         {             _videoIcon[_galleryControlsRPC._fileExplorerIndex].enabled = true;             _photoIcon[_galleryControlsRPC._fileExplorerIndex].enabled = false;         }     }      else if (_loadPhotoFileScript._photoFiles[_galleryControlsRPC._fileExplorerIndex].Contains(".jpg"))     {         for (int i = 0; i < _loadPhotoFileScript._photoFiles.Length; i++)         {             _videoIcon[_galleryControlsRPC._fileExplorerIndex].enabled = false;             _photoIcon[_galleryControlsRPC._fileExplorerIndex].enabled = true;         }     }     //_result = _photoFiles.ToList().Concat(_videoFiles.ToList()).ToArray(); } 

Clase 2:

public string _filePath;  [SyncVar] public string _file; [SyncVar] public int _filePlayIndex; [SyncVar] public int _fileExplorerIndex;  public bool isVideo; public bool isPhoto;  #endregion  #region Metodos de inicializacion  private void Start() {     FileBrowser.AddQuickLink( "Contenidos", _filePath, null );     _filePlayIndex = 1; }  #endregion  public void SendRpcSetFileName( int serverOption ) {     if (isServer)     {         RpcSetFileName( serverOption );     }     SetFileName( serverOption ); }  [ClientRpc] private void RpcSetFileName( int rpcOption ) {     SetFileName( rpcOption ); }  //Metodo que extrae el nombre del archivo seleccionado en el explorador, la asigna en una variable temporal, asigna su formato //y al momento de aceptar en el boton del explorador lo sincronizara en todos los clientes private void SetFileName( int option ) {     _galleryControlsScript._buttonFileName[_galleryControlsRPC._fileExplorerIndex].text          = _fileBrowserScript.filenameInputField.text;      if ( option == _galleryControlsRPC._fileExplorerIndex && _fileBrowserScript.filenameInputField.text.Contains( ".mp4" ) )     {         isVideo = true;         isPhoto = false;         //Obtenemos el nombre del archivo con su extencion         _galleryControlsScript._buttonFileName[_galleryControlsRPC._fileExplorerIndex].text              = _fileBrowserScript.filenameInputField.text.Replace( ".mp4", string.Empty ) ;          //Obtenemos el nombre del archivo, le quitamos la extencion .mp4 y la asignamos al texto del boton seleccionado//asignamos el nombre del archivo a la variable _file         _file = _galleryControlsScript._buttonFileName[_galleryControlsRPC._fileExplorerIndex].text + ".mp4";          //y la agregamos a la lista general de archivos agregandole nuevamente su extencion .mp4         _loadVideoFileScript._videoFiles[_galleryControlsRPC._fileExplorerIndex] = _file;          Debug.Log( "Nombre del archivo: " + _file + " " + " index del explorador: " + _galleryControlsRPC._fileExplorerIndex + " e indes de reproduccion " + _filePlayIndex );         Debug.Log( "Es Video" );     }     else if ( option == _galleryControlsRPC._fileExplorerIndex && _fileBrowserScript.filenameInputField.text.Contains( ".jpg" ) )     {         isPhoto = true;         isVideo = false;         //Obtenemos el nombre del archivo con su extencion         _galleryControlsScript._buttonFileName[_galleryControlsRPC._fileExplorerIndex].text              = _fileBrowserScript.filenameInputField.text.Replace(".jpg", string.Empty);          //Obtenemos el nombre del archivo, le quitamos la extencion .mp4 y la asignamos al texto del boton seleccionado//asignamos el nombre del archivo a la variable _file         _file = _galleryControlsScript._buttonFileName[_galleryControlsRPC._fileExplorerIndex].text + ".jpg";          //y la agregamos a la lista general de archivos agregandole nuevamente su extencion .mp4         _loadPhotoFileScript._photoFiles[_galleryControlsRPC._fileExplorerIndex] = _file;         Debug.Log( "Nombre del archivo: " + _file + " " + " index del explorador: " + _galleryControlsRPC._fileExplorerIndex + " e indes de reproduccion " + _filePlayIndex );         Debug.Log( "Es Foto" );     } }  public void SendRpcSetPlayVideo( int serverOption ) {     if ( isServer )     {         RpcSetPlayVideo( serverOption );     }     SetPlayVideo( serverOption ); }  [ClientRpc] public void RpcSetPlayVideo( int rpcOption ) {     SetPlayVideo( rpcOption ); }  //Metodo que manda a reproducir video por red public void SetPlayVideo( int option ) {     _loadVideoFileScript.LoadVideo( _filePlayIndex );                       }  //Metodo que manda a reproducir video por red public void PlayPhoto( int option ) {     _loadPhotoFileScript.PhotoLoader( _filePlayIndex ); }  public void GetFileBrowserComponent() {     GameObject file = GameObject.FindGameObjectWithTag( "fileExplorer" );     _fileBrowserScript = file.GetComponent<FileBrowser>(); 

Clase 3:

   #region Metodos para Exporador de archivos  //Metodo que se encarga de inicializar los metodos de instanciado del //explorador, obtener los botones "OK" y "Cancel" del explorador. //Tambien hace un seguimiendo del boton seleccionado basandose de un index //y busca el ta "fileExplorer" para mas adelante poder destruirlo public void OpenFileBrowser(int buttonIndex) {     Debug.Log("Boton de explorador = " + buttonIndex);     InstantiateExplorer(buttonIndex);     GetButtonExplorer();     _galleryControlsRPC._fileExplorerIndex = buttonIndex;     _destroyExplorer = GameObject.FindGameObjectWithTag("fileExplorer");     GetFileBrowserComponent();     _galleryControlsRPC.GetFileBrowserComponent();     _fileBrowserScript.GetScripts(); }  //Obtenermos los botones "OK" y "Cancelar" en base a su nombre de tag //y se les agrega el metodo que destruira el explorador public void GetButtonExplorer() {     //Obtenermos el boton cancelar     GameObject getCancelButton = GameObject.FindGameObjectWithTag("buttonCancel");     _cancelButton = getCancelButton.GetComponent<Button>();     if ( _disableButtons )     {         _cancelButton.onClick.AddListener(() => StartCoroutine(ExplorerDestroy()));         _cancelButton.onClick.AddListener(() => _disableButtons.EnableDeleteButton(_galleryControlsRPC._fileExplorerIndex));     }      //Obtenemos el boton aceptar     GameObject getSubmitButton = GameObject.FindGameObjectWithTag("buttonOk");     _submitButton = getSubmitButton.GetComponent<Button>();     if (_galleryControlsRPC && _disableButtons && _galleryControlsScript )     {         _submitButton.onClick.AddListener(() => _galleryControlsRPC.SendRpcSetFileName(_galleryControlsRPC._fileExplorerIndex));         _submitButton.onClick.AddListener(() => StartCoroutine(ExplorerDestroy()));         _submitButton.onClick.AddListener(() => _disableButtons.DisableAddButton(_galleryControlsRPC._fileExplorerIndex));         _submitButton.onClick.AddListener(() => _galleryControlsScript.AddFileToPlay());     } }  //Metodo que destruye el explorador public IEnumerator ExplorerDestroy() {     yield return new WaitForSeconds(0.01f);     DestroyImmediate(_destroyExplorer); }  //Metodo que crea una instancia del explorador de archivos private void InstantiateExplorer(int index) {     GameObject goElement = (GameObject)Instantiate(_fileExplorer);     goElement.transform.localScale = new Vector3(1, 1, 1);     goElement.name = "FileBrowser_" + index; }  //Buscamos el explorador de archivos por su nombre de tag public void GetFileBrowserComponent() {     GameObject file = GameObject.FindGameObjectWithTag("fileExplorer");     _fileBrowserScript = file.GetComponent<FileBrowser>(); }  #endregion 

¿Por qué este bucle no actualiza correctamente este array?

Intento hacer un bucle que añada al array fibSeq = [0,1] la suma de los dos numeros anteriores .

Es decir el resultado con 6 iteraciones debería ser este: fibSeq = [0,1,1,2,3,5,8,13]

Sin embargo el mio no actualiza:

function fib(num){ 	var fibSeq = [0,1]; 	var elultimo = fibSeq.length -1 	var elanterior = elultimo - 1 	var suma = elultimo + elanterior 	 	for (var i = 0; i < num; i++){ 		fibSeq.push(suma) 			} 	return fibSeq }  fib(6)

Y da como resultado fibSeq = [0,1,1,1,1,1,1]

He probado a incluir las declaraciones dentro del bucle

function fib(num){ 	var fibSeq = [0,1]; 	var elultimo = fibSeq.length -1 	var elanterior = elultimo - 1 	var suma = elultimo + elanterior 	 	for (var i = 0; i < num; i++){ 		elultimo = fibSeq.length -1 		elanterior = elultimo - 1 		suma = elultimo + elanterior 		fibSeq.push(suma) 			} 	return fibSeq }  fib(6)

Pero entonces me da unos numeros raros, no los que quiero (los que quiero son los fibonacci) : [0, 1, 1, 3, 5, 7, 9, 11]

Agradecería una explicación de porqué el bucle no se actualiza en vez de una solución de como obtener los numeros fibonacci ya que ando haciendo esto para aprender JS e intento evitar soluciones completas porque si no no aprendo. Gracias.